Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

MipaSenpai/MipMap

Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MipMap Logo

🗺️ MipMap

Interactive online map for Minecraft Bedrock servers

Typing SVG


🎬 See It In Action

MipMap Demo

🗺️ Real-time rendering • 🎨 Depth shading • 👥 Player tracking


✨ What is MipMap?

MipMap transforms your Minecraft Bedrock server into a living, breathing web map. As players explore, the world renders itself automatically — no commands, no waiting, just pure real-time magic.

Two parts. One vision:

🎮 Plugin — Captures chunk data as your world loads and streams it to the web
🌐 Web Server — Generates beautiful map tiles and serves an interactive interface

💜 The map that grows with your world.
No manual rendering. No restarts. Just exploration.


🚀 Features

🔄 Real-Time Updates

Chunks appear on the map instantly as they load in-game. Watch your world expand as players explore.

🌍 Multi-Dimensional

Navigate between Overworld, Nether, and The End with a single click. Each dimension, beautifully rendered.

👥 Player Tracking

See who's online, where they are, and even their Minecraft skins — all live on the map.

🎨 Dynamic Lighting

Blocks rendered with depth-aware shading, ambient occlusion, and custom color palettes. Your world never looked this good.

⚡ Batch Loading

Pre-render entire regions with /loadmap command. Perfect for showcasing builds or preparing for events.

🐳 Docker Ready

One command. One container. Your map is live in seconds.


📦 Installation

Step 1️⃣: Install the Plugin

Download the latest plugin file from Releases and place it in your server's plugins folder. Restart the server.

For LeviLamina: You need to have LeviStone installed.


Step 2️⃣: Launch the Web Server

🐳 Option A: Docker (Recommended)

cd webmap
docker build -t mipmap-webmap .
docker run -d --name mipmap-webmap -p 8000:8000 mipmap-webmap

Done! Visit http://localhost:8000


🐍 Option B: Local with Uvicorn

cd webmap
pip install -r requirements.txt
uvicorn main:app --host 0.0.0.0 --port 8000

Done! Visit http://localhost:8000


🎮 Usage

Commands

Command Description
/loadmap Start loading with default area from config
/loadmap <minX> <minZ> <maxX> <maxZ> Start loading with custom coordinates
/loadmap status Check current loading progress and remaining areas
/loadmap help Display command usage

⚙️ Configuration

Plugin Settings

Edit plugins/mipmap/config.toml:

Key Type Default Description
sendPlayers boolean true Enable player position tracking
api.chunks string "http://localhost:8000/api/chunks-data" Chunks data endpoint
api.players string "http://localhost:8000/api/players-data" Players data endpoint
mapLoading.batchSize int 100 Number of chunks to process per batch
mapLoading.maxAreas int 10 Maximum concurrent loading areas
blacklist.blocks array ["air", "water", ...] Blocks to skip when finding surface

Web Server Settings

Edit webmap/core/config.py:

Key Type Default Description
MAP_SIZE int 2000 Map viewport size in pixels (width/height)
MAP_UPDATE_INTERVAL int 5000 Player position update interval (milliseconds)
MAP_DEFAULT_WORLD string "Overworld" Default dimension to display on load
GENERATE_ZOOM_INTERVAL int 300 Zoom level generation interval (seconds)

Example:

MAP_SIZE = 3000  # Larger viewport for bigger screens
MAP_UPDATE_INTERVAL = 3000  # Update players every 3 seconds
MAP_DEFAULT_WORLD = "Nether"  # Start in the Nether

Web Server Data Structure

webmap/data/
├── worlds/              # 🌍 World data organized by dimension
│   ├── Overworld/
│   │   └── tiles/       # 🖼️ Generated PNG tiles
│   │       ├── zoom-0/
│   │       ├── zoom-1/
│   │       └── zoom-2/
│   ├── Nether/
│   │   └── tiles/
│   └── TheEnd/
│       └── tiles/
├── skins/               # 👤 Player skin cache
│   └── default.png
└── failedTextures.json  # 🚫 Failed texture loading log

📡 API Reference

POST /api/chunks

Receives chunk data from the plugin.

Request Body:

{
  "chunk": {
    "dimension": "Overworld",
    "blocks": [
      {
        "name": "minecraft:grass_block",
        "coordinates": [64, 72, -32]
      },
      {
        "name": "minecraft:stone",
        "coordinates": [64, 71, -32]
      }
    ]
  }
}

POST /api/players

Receives player position data.

Request Body:

{
  "players": [
    {
      "name": "Steve",
      "skin": "89504e47...",  // Hex-encoded PNG
      "skinShape": [64, 64, 4],
      "dimension": "Overworld",
      "x": 123.45,
      "y": 64.0,
      "z": -67.89
    }
  ]
}

🛠️ Tech Stack


🗓️ Roadmap

  • 🌍 Overworld rendering
  • ⚡ Real-time chunk updates
  • 👥 Player tracking with skins
  • 📦 Batch loading command
  • 🐳 Docker deployment
  • 🌌 The End dimension support
  • 🔥 Nether dimension support
  • 🎨 Custom dimension API

🤝 Contributing

Contributions are welcome! Fork the repo, make your changes, and open a Pull Request.


📜 License

This project is licensed under the MIT License. See LICENSE for details.


✨ MipMap - where each block finds its place. ✨

About

MipMap - Interactive Online Map for Endstone & LeviLamina.

Topics

Resources

Stars

Watchers

Forks

Releases

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.