GithubHelp home page GithubHelp logo

clvrk / papyruscs Goto Github PK

View Code? Open in Web Editor NEW

This project forked from papyrus-mc/papyruscs

2.0 0.0 0.0 6.45 MB

PapyrusCS renders maps of Minecraft: Bedrock Edition worlds using C#, LevelDB and leaflet.

License: Apache License 2.0

C# 100.00%

papyruscs's Introduction

Chat: Discord
Windows: Build status
Linux: Build status

Contribute xor support

If you want to help improving Papyrus please consider forking the repository.

Want to buy me a coffee (I love coffee)? Donate via PayPal โ™ฅ

Usage

For Linux: give the extracted PapyrusCs file execution rights! See installation notes above.

For Windows: you can now start the papyruscs.exe in interactive mode. Just start it, it will try to find your local minecraft maps.

papyruscs --world "My World/db" --output "C:\papyrus"


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.


The vanilla resource pack with the default textures can be downloaded from here.

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...

Version 0.3.6

Less memory usage and faster! More robust!

Version 0.3.5

Thx to @hach-que!

--profile underground|aquatic|ore|stronghold

add underground, aquatic, ore OR stronghold after --profile for the specific profile view.

Version 0.3.3

OpenLayers as new default mapping library! Thanks for the contribution! Use

--use_leaflet_legacy

options if you want to use the old leaflet instead.

Version 0.3.2

Texture fixes
--brillouin_offset x parameter for worlds with low/high ground level
--forceoverwrite parameter to force reender everything\

Version 0.3

What's new:

New folder structure:

The new folder structure is:

outputdir
|-map
|   |-dim0
|   |-dim1
|   |-dim2
|   |-map.html
|   |-playersData.js
|-update
|   |-dim0
|   |-dim1
|   |-dim2
|   |-map.html
|   |-playersData.js
|-chunks.sqlite
|-chunks-backup.sqlite

Incremental Rendering:

With strategy Dataflow (default) PapyrusCs creates a sqlite database with chunk CRCs to check if a update rendering is necessary. PapyrusCs creates an update folder, which contains only the files that were updated (it will be copied to the map folder as well) So you just have to upload the content of the update folder after an update of the map.

With the option

--deleteexistingupdatefolder

the current dimension update folder to be rendered (dim0/1/2) will be deleted before the next update will be rendered. This is useful if you don't want to upload previous updated files again. Of course you can delete this folder by hand yourself.

Dimensions

PapyrusCs supports dimensions now: Overworld, Nether, The End
To render another dimension, add the --dim parameter (default --dim 0):\

--dim 0 (=Overworld)
--dim 1 (=Nether)
--dim 2 (=The End)

To render all dimensions in one map with layers See papyrus bedrock server, you have to call PapyrusCs three times. Example:\

PapyrusCs -w <yourworld> -o <youroutputfolder> -dim 0
PapyrusCs -w <yourworld> -o <youroutputfolder> -dim 1
PapyrusCs -w <yourworld> -o <youroutputfolder> -dim 2

This will generate all dimensions as maps.\

Outputformat

Multiple formats are now supported: jpg, png, webp
You now can select the output format with -f jpg or -f png or -f webp
For jpg and webp, you can select the quality:\

jpg: 0-100 (100 best)
webp: 0-100 (100 best but lossy. Value -1 is lossless and usually smaller than 100, -1 is also default)\

You can set that value with the parameter -q

Example

-f webp -q -1
-f png
-f jpg -q 20

papyrus.cs

Papyrus is a tool to render Minecraft: Bedrock Edition (from now on referenced as "MCBE") worlds using Leaflet. It is written in C# and powered by .NET Core 2.2. It currently runs only under windows, but support for linux is planned.

You can view an example here.

Introduction

Since MCBE worlds don't use the Anvil format like in the Java Edition, but rather a by Mojang modified version of Google's LevelDB to save, the goal of Papyrus is to read these worlds and assemble a render of every pre-generated chunk.

Features

  • Render a top-down map of every already explored chunk
  • Windows and Linux Support

Planned

  • Isometric renders

Installation

Otherwise, just grab one of the pre-built binaries. Just unpack the zip-file.

Linux

Make sure that your graphics libs are up-to-date: (Syntax may vary in other distros)

sudo apt-get update
sudo apt-get install libgdiplus
sudo apt-get install libc6-dev

And give PapyrusCs execution rights: chmod +x PapyrusCs

For own compilation: Requires .NET Core 3.0. You may need to install additional dependencies.

Compilation

To compile for windows use either 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

The source for the modified versions is included in this repository. All needed depencies are already included in this repository or automatically downloaded via NuGet.

Special thanks to...

... clarkx86 for his team work and idea giving and his port in node.js.

Disclaimer

Papyrus is in no way affiliated with Mojang or Minecraft.

Contact: [email protected]

papyruscs's People

Contributors

mjungnickel18 avatar aaronaxvig avatar hach-que avatar clvrk avatar jflin404 avatar barrett777 avatar paulwalkeruk avatar christian7573 avatar mecu avatar laosb avatar bennydiamond avatar

Stargazers

Tok' avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.