Compare commits
3 Commits
b0d070bad7
...
db3e07689a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
db3e07689a | ||
|
|
e19abdb9fa | ||
|
|
ba91de54d8 |
156
INTERFACE.md
Normal file
156
INTERFACE.md
Normal file
@@ -0,0 +1,156 @@
|
||||
# 🎨 Interface Overview
|
||||
|
||||
## Web Interface Layout
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ [📊 Split View] [🗺️ Map Only] [🎮 Control Only] [🟢 Connected]│
|
||||
├──────────────────┬──────────────────────────────────────────────────┤
|
||||
│ │ │
|
||||
│ 🐢 Turtle List │ 3D Map View │
|
||||
│ ───────────── │ │
|
||||
│ │ ┌─────┐ │
|
||||
│ ┌────────────┐ │ │ T-1 │ ← Selected Turtle │
|
||||
│ │ Turtle 1 │◄─┼─────────└─────┘ │
|
||||
│ │ [mining] │ │ │
|
||||
│ │ 100,64,200 │ │ │
|
||||
│ │ F:5000 I:8 │ │ 🏠 HOME │
|
||||
│ └────────────┘ │ │
|
||||
│ │ │
|
||||
│ ┌────────────┐ │ Path Trail ---- │
|
||||
│ │ Turtle 2 │ │ \ │
|
||||
│ │ [idle] │ │ ┌─────┐ │
|
||||
│ │ 105,65,195 │ │ │ T-2 │ │
|
||||
│ │ F:3200 I:3 │ │ └─────┘ │
|
||||
│ └────────────┘ │ │
|
||||
│ │ │
|
||||
│ No turtles... │ Grid Floor (5x5 blocks) │
|
||||
│ │ │
|
||||
├──────────────────┴──────────────────────────────────────────────────┤
|
||||
│ Turtle 1 Control │
|
||||
│ ─────────────── │
|
||||
│ Status: │
|
||||
│ Mode: mining Fuel: 5000 │
|
||||
│ Position: X: 100, Y: 64, Z: 200 │
|
||||
│ Home: X: 95, Y: 64, Z: 195 │
|
||||
│ │
|
||||
│ Commands: │
|
||||
│ [🔍 Explore] [⛏️ Mine] [🏠 Return Home] [⏹️ Stop] │
|
||||
│ │
|
||||
│ Manual Control: │
|
||||
│ [↑] │
|
||||
│ [←] [→] │
|
||||
│ [↓] │
|
||||
│ [⬆ Up] [⬇ Down] │
|
||||
│ │
|
||||
│ Inventory: │
|
||||
│ coal_ore x32 iron_ore x16 diamond_ore x3 │
|
||||
│ cobblestone x64 dirt x12 │
|
||||
└──────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## Color Scheme
|
||||
|
||||
### Turtle Status Colors
|
||||
- 🟢 **Green (#4ade80)**: Mining/Active
|
||||
- 🔵 **Blue (#60a5fa)**: Exploring
|
||||
- 🟠 **Orange (#f59e0b)**: Returning Home
|
||||
- ⚪ **Gray (#9ca3af)**: Idle
|
||||
- 🟣 **Purple (#a78bfa)**: Manual Control
|
||||
|
||||
### UI Colors
|
||||
- **Background**: Dark blue (#0a0e1a, #0f172a)
|
||||
- **Panels**: Slate (#1e293b)
|
||||
- **Borders**: Gray-blue (#334155)
|
||||
- **Text**: Light gray (#e2e8f0)
|
||||
- **Accents**: Cyan (#60a5fa)
|
||||
|
||||
## Features Visualization
|
||||
|
||||
### 3D Map Features
|
||||
```
|
||||
┌─────────────────────────────┐
|
||||
│ Orbital Camera Control │
|
||||
│ - Rotate: Left Click+Drag │
|
||||
│ - Zoom: Scroll Wheel │
|
||||
│ - Pan: Right Click+Drag │
|
||||
│ │
|
||||
│ Turtle Markers: │
|
||||
│ ┌─┐ │
|
||||
│ │░│ ← 3D Box │
|
||||
│ └─┘ │
|
||||
│ ▲ ← Selection Arrow │
|
||||
│ ⭕ ← Selection Ring │
|
||||
│ T-1 ← ID Label │
|
||||
│ │
|
||||
│ Path Trails: │
|
||||
│ ---- Dashed line to home │
|
||||
│ │
|
||||
│ Grid: │
|
||||
│ □ □ □ 1-block grid │
|
||||
│ ▪ ▪ ▪ 5-block sections │
|
||||
└─────────────────────────────┘
|
||||
```
|
||||
|
||||
### Control Panel Features
|
||||
```
|
||||
┌──────────────────────────────┐
|
||||
│ Turtle Card (Clickable) │
|
||||
├──────────────────────────────┤
|
||||
│ Turtle 1 [mining] ● │
|
||||
│ 100, 64, 200 │
|
||||
│ F: 5000 I: 8 items │
|
||||
│ Home: 15 blocks │
|
||||
└──────────────────────────────┘
|
||||
↓ Click to select
|
||||
┌──────────────────────────────┐
|
||||
│ Detail View │
|
||||
├──────────────────────────────┤
|
||||
│ All stats + commands │
|
||||
│ Manual control arrows │
|
||||
│ Inventory grid │
|
||||
└──────────────────────────────┘
|
||||
```
|
||||
|
||||
## Responsive Behavior
|
||||
|
||||
### View Modes
|
||||
|
||||
**Split View** (Default)
|
||||
- Best for desktop monitors
|
||||
- Side-by-side layout
|
||||
- Full visibility of both map and controls
|
||||
|
||||
**Map Only**
|
||||
- Fullscreen 3D visualization
|
||||
- Great for presentations
|
||||
- Multi-turtle overview
|
||||
|
||||
**Control Only**
|
||||
- Detailed turtle management
|
||||
- Better for laptops/smaller screens
|
||||
- Focus on commands and data
|
||||
|
||||
## Real-time Updates
|
||||
|
||||
```
|
||||
Turtle moves → Status broadcast → Web Bridge → Server → WebSocket → React
|
||||
↓
|
||||
Update 3D Map
|
||||
Update Stats
|
||||
Animate Marker
|
||||
```
|
||||
|
||||
Update frequency: Every 5 seconds or on command execution
|
||||
|
||||
## Interactive Elements
|
||||
|
||||
- **Clickable**: Turtle cards, 3D markers, command buttons
|
||||
- **Hoverable**: Buttons show hover effects
|
||||
- **Animated**: Selected turtle rotates, status dot pulses
|
||||
- **Live**: Real-time position tracking on map
|
||||
- **Responsive**: View mode switches, panel scrolling
|
||||
|
||||
---
|
||||
|
||||
Launch the interface to see it in action! 🚀
|
||||
248
PROJECT_SUMMARY.md
Normal file
248
PROJECT_SUMMARY.md
Normal file
@@ -0,0 +1,248 @@
|
||||
# 📦 Project Summary
|
||||
|
||||
## What Was Created
|
||||
|
||||
This project has been expanded from a simple Lua-based turtle control system into a **full-stack web application** with:
|
||||
|
||||
### 🎯 Key Components
|
||||
|
||||
1. **Backend Server** (`server/`)
|
||||
- Express.js HTTP server (port 3001)
|
||||
- WebSocket server for real-time updates (port 3002)
|
||||
- REST API for turtle communication
|
||||
- Automatic turtle state management
|
||||
|
||||
2. **Frontend Application** (`client/`)
|
||||
- React 18 with Vite build system
|
||||
- 3D map visualization using Three.js and React Three Fiber
|
||||
- Real-time WebSocket connection
|
||||
- Zustand state management
|
||||
- Responsive control panel with multiple view modes
|
||||
|
||||
3. **Minecraft Bridge** (`webbridge.lua`)
|
||||
- Forwards turtle status from ComputerCraft to web server
|
||||
- Polls for commands from server
|
||||
- HTTP communication bridge
|
||||
|
||||
4. **Original Turtle Scripts** (Enhanced)
|
||||
- `turtle.lua` - Advanced autonomous mining turtle
|
||||
- `pocketremote.lua` - Pocket computer interface
|
||||
|
||||
### 📂 Complete File Structure
|
||||
|
||||
```
|
||||
remoteturtle/
|
||||
│
|
||||
├── 📄 README.md # Complete documentation
|
||||
├── 📄 QUICKSTART.md # Quick setup guide
|
||||
├── 📄 INTERFACE.md # UI/UX overview
|
||||
├── 📄 package.json # Root package file
|
||||
├── 📄 .gitignore # Git ignore rules
|
||||
│
|
||||
├── 🚀 start.sh # Linux/Mac startup script
|
||||
├── 🚀 start.bat # Windows startup script
|
||||
│
|
||||
├── 🖥️ server/ # Backend Server
|
||||
│ ├── server.js # Main server code
|
||||
│ └── package.json # Dependencies
|
||||
│
|
||||
├── 🌐 client/ # React Frontend
|
||||
│ ├── index.html
|
||||
│ ├── vite.config.js
|
||||
│ ├── package.json
|
||||
│ └── src/
|
||||
│ ├── main.jsx # Entry point
|
||||
│ ├── App.jsx # Main app component
|
||||
│ ├── App.css
|
||||
│ ├── index.css # Global styles
|
||||
│ │
|
||||
│ ├── components/
|
||||
│ │ ├── Map3D.jsx # 3D map visualization
|
||||
│ │ ├── ControlPanel.jsx # Control interface
|
||||
│ │ └── ControlPanel.css # Panel styles
|
||||
│ │
|
||||
│ └── store/
|
||||
│ └── turtleStore.js # State management
|
||||
│
|
||||
└── 🎮 Lua Scripts/ # Minecraft/ComputerCraft
|
||||
├── webbridge.lua # Web server bridge
|
||||
├── turtle.lua # Advanced turtle AI
|
||||
└── pocketremote.lua # Pocket computer UI
|
||||
```
|
||||
|
||||
## 🎨 Features Implemented
|
||||
|
||||
### Web Interface
|
||||
- ✅ Real-time 3D map with orbital camera controls
|
||||
- ✅ Interactive turtle markers with selection
|
||||
- ✅ Path trails showing routes to home
|
||||
- ✅ Multiple view modes (Split/Map/Control)
|
||||
- ✅ Connection status indicator
|
||||
- ✅ Turtle cards with live stats
|
||||
- ✅ Detailed control panel per turtle
|
||||
- ✅ Command buttons (Explore, Mine, Return, Stop)
|
||||
- ✅ Manual control arrows
|
||||
- ✅ Inventory visualization
|
||||
- ✅ Auto-reconnect on disconnect
|
||||
|
||||
### Backend
|
||||
- ✅ WebSocket real-time communication
|
||||
- ✅ REST API for turtle updates
|
||||
- ✅ Command queuing system
|
||||
- ✅ Automatic stale turtle cleanup
|
||||
- ✅ CORS enabled for local development
|
||||
- ✅ Error handling and logging
|
||||
|
||||
### Minecraft Integration
|
||||
- ✅ Bridge script for HTTP communication
|
||||
- ✅ Command polling system
|
||||
- ✅ Status broadcasting
|
||||
- ✅ Backward compatible with existing scripts
|
||||
|
||||
## 🔧 Technologies Used
|
||||
|
||||
### Frontend
|
||||
- **React 18** - UI framework
|
||||
- **Vite** - Build tool and dev server
|
||||
- **Three.js** - 3D graphics library
|
||||
- **@react-three/fiber** - React renderer for Three.js
|
||||
- **@react-three/drei** - Helper components for R3F
|
||||
- **Zustand** - Lightweight state management
|
||||
- **WebSocket API** - Real-time communication
|
||||
|
||||
### Backend
|
||||
- **Node.js** - Runtime environment
|
||||
- **Express** - Web framework
|
||||
- **ws** - WebSocket server
|
||||
- **cors** - Cross-origin resource sharing
|
||||
|
||||
### Minecraft
|
||||
- **ComputerCraft** - Lua API for Minecraft
|
||||
- **HTTP API** - For web communication
|
||||
- **Modem API** - For wireless communication
|
||||
|
||||
## 🚀 Quick Start Commands
|
||||
|
||||
### Install Everything
|
||||
```bash
|
||||
npm run install:all
|
||||
```
|
||||
|
||||
### Start in Development Mode
|
||||
```bash
|
||||
# Using npm (starts both servers)
|
||||
npm run dev
|
||||
|
||||
# Or use the helper scripts
|
||||
./start.sh # Linux/Mac
|
||||
start.bat # Windows
|
||||
```
|
||||
|
||||
### Individual Services
|
||||
```bash
|
||||
npm run server # Start backend only
|
||||
npm run client # Start frontend only
|
||||
```
|
||||
|
||||
## 🌐 Access Points
|
||||
|
||||
Once running:
|
||||
- **Web Interface**: http://localhost:3000
|
||||
- **API Server**: http://localhost:3001
|
||||
- **WebSocket**: ws://localhost:3002
|
||||
- **API Docs**: Check README.md API Reference section
|
||||
|
||||
## 📊 Data Flow
|
||||
|
||||
```
|
||||
┌──────────────┐
|
||||
│ Turtle │
|
||||
│ (turtle.lua)│
|
||||
└──────┬───────┘
|
||||
│ Status (Modem Channel 102)
|
||||
↓
|
||||
┌──────────────┐
|
||||
│ Bridge │
|
||||
│(webbridge.lua)│ ← Forwards via HTTP
|
||||
└──────┬───────┘
|
||||
│ POST /api/turtle/update
|
||||
↓
|
||||
┌──────────────┐
|
||||
│ Node Server │ ← Broadcasts via WebSocket
|
||||
│ (server.js) │
|
||||
└──────┬───────┘
|
||||
│ WebSocket message
|
||||
↓
|
||||
┌──────────────┐
|
||||
│ React Client │ ← Updates UI in real-time
|
||||
│ (App.jsx) │
|
||||
└──────────────┘
|
||||
│ Command button click
|
||||
↓
|
||||
┌──────────────┐
|
||||
│ Server │ ← Queues command
|
||||
└──────┬───────┘
|
||||
│ GET /api/turtle/:id/commands
|
||||
↓
|
||||
┌──────────────┐
|
||||
│ Bridge │ ← Polls for commands
|
||||
└──────┬───────┘
|
||||
│ Modem Channel 100
|
||||
↓
|
||||
┌──────────────┐
|
||||
│ Turtle │ ← Executes command
|
||||
└──────────────┘
|
||||
```
|
||||
|
||||
## 🎯 Next Steps
|
||||
|
||||
1. **Run the startup script** to install dependencies
|
||||
2. **Start Minecraft** and set up the bridge computer
|
||||
3. **Deploy turtles** with the turtle.lua script
|
||||
4. **Open the web interface** and start controlling!
|
||||
|
||||
## 💡 Tips for Use
|
||||
|
||||
- Keep the bridge computer loaded (use chunk loaders)
|
||||
- Set up GPS hosts for accurate positioning
|
||||
- Monitor the 3D map for turtle movements
|
||||
- Use split view on larger screens
|
||||
- Switch to map-only for presentations
|
||||
- Try the manual controls for precise movements
|
||||
|
||||
## 🐛 Common Issues
|
||||
|
||||
**Port already in use?**
|
||||
- Change ports in `server/server.js` and `client/src/store/turtleStore.js`
|
||||
|
||||
**Turtles not connecting?**
|
||||
- Verify `webbridge.lua` SERVER_URL matches your setup
|
||||
- Check all scripts use matching channel numbers
|
||||
- Ensure wireless modems are equipped
|
||||
|
||||
**3D map not rendering?**
|
||||
- Check browser console for errors
|
||||
- Ensure WebGL is supported by your browser
|
||||
- Try a different browser (Chrome/Firefox recommended)
|
||||
|
||||
## 📝 Documentation Files
|
||||
|
||||
- **README.md** - Complete documentation with API reference
|
||||
- **QUICKSTART.md** - Fast setup guide
|
||||
- **INTERFACE.md** - UI/UX overview
|
||||
- This file - Project summary
|
||||
|
||||
---
|
||||
|
||||
## 🎉 Success!
|
||||
|
||||
You now have a complete web-based control center for your Minecraft turtles!
|
||||
|
||||
**Features you can use:**
|
||||
- Monitor multiple turtles on a 3D map
|
||||
- Send commands from your browser
|
||||
- Watch real-time position updates
|
||||
- Control turtles from any device on your network
|
||||
- Beautiful, modern UI with dark theme
|
||||
|
||||
**Happy turtle controlling!** 🐢✨
|
||||
24
package.json
Normal file
24
package.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "turtle-control-center",
|
||||
"version": "1.0.0",
|
||||
"description": "Web-based control center for ComputerCraft mining turtles",
|
||||
"scripts": {
|
||||
"install:all": "cd server && npm install && cd ../client && npm install",
|
||||
"dev": "concurrently \"npm run server\" \"npm run client\"",
|
||||
"server": "cd server && npm start",
|
||||
"client": "cd client && npm run dev",
|
||||
"build": "cd client && npm run build"
|
||||
},
|
||||
"keywords": [
|
||||
"minecraft",
|
||||
"computercraft",
|
||||
"turtle",
|
||||
"control",
|
||||
"web"
|
||||
],
|
||||
"author": "",
|
||||
"license": "MIT",
|
||||
"devDependencies": {
|
||||
"concurrently": "^8.2.2"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user