Skip to content

MipaSenpai/MipMap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

65 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. โœจ