4.6 KiB
minecraft-kartverket
Map markers for PVV's minecraft server
What is this?
This project is meant to let PVV members contribute map data for PVV's minecraft server, like coordinates for bases, cities, and other points of interest. These markers are written in python so that we can do things like generating points in a loop, calculating distances, and other types of automation.
The codebase includes a CLI tool that we use to export this data into the formats of several minecraft map implementations.
Grab the latest exports here:
- Bluemap:
- Mapcrafter:
Marker sets
Here is an overview of the different marker sets, and what they are meant for.
-
Overworld
- Area Names: larger areas with names
- Buildings: important buildings and world wonders.
- Cities: an area that consist of several bases and/or public infrastructure.
- Homes: single bases consisting of 1-3 people.
- Huts: small huts, meant for visitors and travelers.
- Infrastructure: public infrastructure, like bridges, ports, tunnels, etc.
- Mines: public mines
- Nature: similar to "Area Names", but specifically for mostly untouched nature-named areas.
- Other: anything that doesn't fit into the other categories
- Railways: railways
- Roads: roads
- Villages: villages generated by minecraft (as opposed to player made cities)
-
Nether
- Ice Tracks: ice tracks meant for boats.
- Other: anything that doesn't fit into the other categories
- Portals: named portals that lead back to the overworld.
- Railways: railways
-
The End
- Other: anything that doesn't fit into the other categories
- Portals: end portals that send you back to the center of the map
How to run the python code
You can either use uv, nix or the bundled Makefile with a bare python installation to run the project.
There should be no external dependencies to run the code.
In the following sections of the readme, we will assume that you are using uv, but the other methods can also be adapted to the instructions.
Using uv
If you have uv installed, running the code is as easy as executing
uv run mckart <args>
Using the Makefile
The makefile will validate the map data, and generate both types of map exports in a directory named out
You can invoke it with:
make
ls out
Using nix
# Run the cli tool
nix run .# <args>
# Build the exports
nix build .#bluemap-export
nix build .#mapcrafter-export
# Get a python environment with development tooling
nix develop
How to add a point marker
- Find the correct marker set file in
src/marker_sets/<world>. - Add the marker to the list in the file. You can look at neighbouring markers for inspiration.
- Run the cli tool to verify that the marker has been added correctly.
uv run mckart verify
uv run mckart print
- Open a pull request at https://git.pvv.ntnu.no/Projects/minecraft-kartverket/pulls
How to add a railway / road
This is very similar to adding a point marker, but the content of the marker is different.
You can follow the previous guide, but for step 3, use this template or look at other markers for inspiration.
from lib_marker import Track
MARKERS = [
...,
Track(
name="Nordbanen",
points = [
(848, 70, 1583),
(920, 70, 1583),
(920, 70, 1200),
...
],
),
...,
]
How to add a new marker set
To add a new marker set, you need to:
- Create a new file the other marker sets in
src/marker_sets/<world>. - Create a marker set in this file, using this template:
from lib_marker.marker_set import MarkerSet
MARKER_SET = MarkerSet(
name="My Marker Set",
markers=[
],
)
- Add the marker set to the
MARKER_SETSlist insrc/marker_sets/<world>/__init__.py.
from .<marker_set_name> import MARKER_SET as <marker_set_name>_marker_set
MARKER_SETS = [
...
portals_marker_set,
]
See the other marker sets for inspiration.
- Add the marker set with a description to this README file.