Papyruscs
PapyrusCS renders maps of Minecraft: Bedrock Edition worlds using C#, LevelDB and leaflet.
Install / Use
/learn @papyrus-mc/PapyruscsREADME
Chat: <br>
Windows:
<br>
Linux:
<br>
Papyrus
A Minecraft: Bedrock Edition map renderer.
Papayrus renders a top-down map of every already explored chunk. It works on Windows and on Linux, and it outputs HTML and images suitable for displaying on the web.
Intro
Papyrus is a tool to render Minecraft: Bedrock Edition (MCBE) worlds on the web. It's written in C# and powered by .NET Core. You can view an example here.
There are several tools which work for Java Edition. MCBE worlds don't use the Anvil format like in the Java Edition. Mojang chose a modified version of Google's LevelDB to save MCBE maps. Papyrus reads these worlds and assembles a render of every pre-generated chunk.
Contribute xor support
If you want to help improving Papyrus please consider forking the repository, making your changes, and proposing a PR.
Want to buy me a coffee (I love coffee)? Donate via PayPal ♥
Setup
Easy mode - Windows
- Grab the Windows pre-built binaries.
- Unpack the zip file.
- Optional: update the textures
- Then follow the usage instructions.
Easy mode - Linux
- Grab the Linux pre-built binaries.
- Make sure that your graphics libs are up-to-date. On Ubuntu/Debian, that looks like:
sudo apt-get update
sudo apt-get install libgdiplus
sudo apt-get install libc6-dev
- Make the
PapyrusCsbinary executable:chmod +x PapyrusCs - Optional: update the textures
- Then follow the usage instructions.
Hard mode - build it yourself
See the building instructions.
Updating the textures
Papyrus comes with some of the required textures, but recent MCBE releases may have added more. You can update with a texture pack in order to generate everything just right.
The vanilla resource pack with the default textures can be downloaded from here.
Extract textures/terrain_texture.json and textures/blocks/* from that zip.
Wherever you unzipped Papyrus, replace its textures/ directory with what you got from the resource pack.
Usage
PapyrusCs is a command-line tool.
Supported flags are shown here.
--world and --output are required; the rest are optional.
papyruscs --world "My World/db" --output "C:\papyrus"
On Windows, you can now start papyruscs.exe in interactive mode.
Run without any arguments, and it will try to find your local minecraft maps.
The rest of the parameters are listed if you run with --help:
PapyrusCs 0.5.0
Copyright (C) 2020 Markus Jungnickel
-w, --world Sets the path the Minecraft Bedrock Edition Map
-o, --output Sets the output path for the generated map tiles
--htmlfile (Default: map.html) Sets name of html map file
-s, --strategy (Default: Dataflow) Sets the render strategy. Valid is only Dataflow
--coords (Default: false) Render text coordinates in each chunk
--limitx Limits the chunk rendering in the x dimension (inclusive). Provide two
values with comma separated, eg: -10,10
--limitz Limits the chunk rendering in the z dimension (inclusive). Provide two
values with comma separated, eg: -10,10
-y, --limity (Default: -1) Limits the chunk rendering in the y dimension
(inclusive). For y provide just one positive value, eg: 10. -1 means:
all
--threads (Default: 16) Set maximum of used threads
--maxqueue (Default: 128) Set maximum queue length for the pipeline stages
-r, --rendermode (Default: Heightmap) RenderMode: Basic - Render without brightness
adjustment. Heightmap - Render with brightness adjustment based on
brillouin function and height of block
--brillouin_j (Default: 10000) Sets factor j for heightmap brightness formula
brillouin: brightness = 1+brillouin((height-offset) / divider): See
https://de.wikipedia.org/wiki/Brillouin-Funktion for a diagram of the
function.
--brillouin_divider (Default: 20) Sets divider for heightmap brightness formula brillouin:
brightness = 1+brillouin((height-offset) / divider). See
https://de.wikipedia.org/wiki/Brillouin-Funktion for a diagram of the
function.
--brillouin_offset (Default: 64) Sets the offset for heightmap brightness formula
brillouin: brightness = 1+brillouin((height-offset) / divider). See
https://de.wikipedia.org/wiki/Brillouin-Funktion for a diagram of the
function.
-f (Default: png) Sets the output file format
-q (Default: -1) Sets quality for jpg or web format (0-100, -1 for
lossless webp)
--forceoverwrite (Default: false) Forces PapyrusCs to render every chunk again
-d, --dim (Default: 0) Selects the dimension. 0: Overworld, 1: Nether, 2: End
-p, --profile (Default: ) Optional profile: 'underground', 'aquatic', 'ore',
'stronghold'
--trimceiling (Default: false) Removes the ceiling starting from y-max.
Automatically activated for nether
--notrimceiling (Default: false) Disables auto ceiling removal for Nether
--deleteexistingupdatefolder (Default: false) Delete an existing update/dimX folder right before
creating a possible new update
--chunksperdimension (Default: 2) Sets the chunks per X and Y dimension for the generated
tiles. 1 => 1 chunk per tile, 2 => 4 chunks per tile and so on
--playericons (Default: false) Renders player markers on the map. Player names must
be manually entered. After running, edit '/map/playersData.js' text
file to modify player names and colors.
--render_map (Default: true) Renders the map. This is the main feature of this
program. Only disable this in special circumstances, such as if you
want to quickly update player markers without updating the map.
--help Display this help screen.
--version Display version information.
Building
Papyrus runs on .NET Core 3.0+. First, make sure you have .NET Core 3.0 on your development machine.
To compile for Windows, either use a recent Visual Studio or run:
dotnet publish PapyrusCs -c Release --self-contained --runtime win-x64
To compile for Linux run:
dotnet publish PapyrusCs -c Debug --self-contained --runtime linux-x64
Additional dependencies
PapyrusCs depends on a few external libraries with some custom changes. The source for the modified versions is included in this repository. All needed dependencies are already included in this repository or automatically downloaded via NuGet.
- level-db-sharp: This project used a modified version of leveldb-sharp. license
- imageformats: This project uses a modified version of image formats TgaReader license
- leveldb-mcpe: This project uses the leveldb native library for windows64 and linux64. license
Changelog
Version 0.5.0 - So many things
Update to .NET Core 3.1 Updated textures
- Fixed null ref exception with bee hives
- Interactive mode (Thx to aaronaxvig)
- Crc32 Fix (Thx to bennydiamond)
- Updated Readme (Thx to PaulWalkerUK)
- Player Markser (thx to barrett777)
Version 0.4.0 - Memory usage and textures improvements
A few tweaks to improve memory usage:
use parameter --threads 1 --maxqueue 1 to limit memory usage.
This version also includes two pull requests:
- Significantly improve memory usage when rendering zoom levels (#21 by barrett777)
- Fixed bunch of annoyances (#19 by jflin404)
Thx for the help! Thx to Mecu for updating the docs!
Version 0.3.7 - .NET Core 3 Update
Update to .NET Core 3 Changed link to openlayers Some other optimizations...
Related Skills
node-connect
341.6kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
84.6kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
341.6kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
commit-push-pr
84.6kCommit, push, and open a PR
