Описание
BlueMap Sign Markers
====================
# Overview
Fabric plugin for BlueMap that displays markers based on in-game signs
# Installation
Place in your `mods` folder along with BlueMap.
Server-side only.
# Usage
Place a sign or hanging sign with the following text on either the front or back:
```
[poi]
```
A marker will be displayed on the map at the location of the sign with the text ``. The marker will
be removed from the map when the sign is broken.
Note that the prefixes can be configured in the configuration file.
# Configuration
The mod will create a `BMSM-Core.json` file in the `config/bluemapsignmarkers` folder. This file contains the following
options:
- `markerGroups` - a list of marker groups (described in detail below); default is a list with a single marker group
configured for the `[poi]` prefix.
## Marker Groups
A marker group is a collection of markers that can be toggled on and off in the BlueMap UI. Each marker group
configuration contains the following options:
- `prefix` - prefix that the sign must contain to be included in the marker group; required;
- `matchType` - the type of match to use when checking the first non-empty sign text line; optional; default is `STARTS_WITH` (case-sensitive exact match);
- `STARTS_WITH` - line must start with the prefix;
- `REGEX` - line must match the regular expression (uses [Java regex engine](https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html));
- `name` - the name of the marker group; required;
- `type` - the type of marker to display; optional; default is `POI`
- `POI` - a single point marker per sign;
- `LINE` - signs sharing this group's prefix and the same first-line label become ordered points of one line marker (points ordered by placement time); requires at least 2 signs to appear;
- `SHAPE` - signs sharing this group's prefix and the same first-line label become ordered points of one filled polygon marker (points ordered by placement time, height taken from the tallest member); requires at least 3 signs to appear;
- `EXTRUDE` - shares `SHAPE`'s exact membership model (same prefix/label grouping, 3+ signs, points ordered by placement time), but renders the polygon extruded as a solid volume: the floor is taken from the lowest member's Y, the ceiling from the tallest member's Y (if all members share the same Y, the ceiling is bumped up by 1 block to avoid a zero-height volume);
- `icon` - the icon path or URL to display for the marker; optional; default is `null` (BlueMap default POI icon); `POI` only
- `offsetX` - the x offset of the marker; optional; default is `0` (corresponds with `anchor.x` in BlueMap base configuration); `POI` only
- `offsetY` - the y offset of the marker; optional; default is `0` (corresponds with `anchor.y` in BlueMap base configuration); `POI` only
- `defaultHidden` - If this is true, the marker-set will be hidden by default and can be enabled by the user; optional; default is `false`
- `minDistance` - the minimum distance from the camera at which the marker will be displayed; optional; default is `0.0` (floating point, double precision)
- `maxDistance` - the maximum distance from the camera at which the marker will be displayed; optional; default is `10000000.0` (floating point, double precision)
- `lineWidth` - the width in pixels of the line/shape/extrude border; optional; default is `2`; `LINE`/`SHAPE`/`EXTRUDE` only
- `lineColor` - the hex color (with alpha) of the line/shape/extrude border, e.g. `#FF0000FF`; optional; default is `#FF0000FF`; `LINE`/`SHAPE`/`EXTRUDE` only
- `fillColor` - the hex color (with alpha) of a shape's or extrude volume's interior, e.g. `#FF000033`; optional; default is `#FF000033` (translucent red); `SHAPE`/`EXTRUDE` only
- `sorting` - the marker-set's order in the map's layer menu (lower sorts first); optional; default is `0`
- `toggleable` - whether the marker-set can be hidden/shown by a player at all; optional; default is `true`
- `depthTest` - whether terrain can occlude the marker (set `false` to keep an underground trail/region visible through terrain); optional; default is `true`; `LINE`/`SHAPE`/`EXTRUDE` only
- `cssClasses` - a list of CSS classes added to the marker element, for styling via BlueMap's `custom.css`; optional; default is an empty list; `POI` only
Setting a field on a group type it doesn't apply to (e.g. `icon` on a `LINE`/`SHAPE`/`EXTRUDE` group, `fillColor` on a
`POI`/`LINE` group, `depthTest` on a `POI` group, or `cssClasses` on a `LINE`/`SHAPE`/`EXTRUDE` group) is not an error;
the mod logs a warning and ignores the field.
## Examples
```json
{
"markerGroups": [
{
"prefix": "[poi]",
"name": "Points of Interest"
},
{
"prefix": "[store]",
"name": "Stores",
"icon": "assets/store.png"
},
{
"prefix": "\\[[vV][iI][lL][lL][aA][gG][eE]\\]",
"matchType": "REGEX",
"name": "Villages"
},
{
"prefix": "[trail]",
"name": "Trails",
"type": "LINE",
"lineWidth": 3,
"lineColor": "#00A2FFFF"
},
{
"prefix": "[region]",
"name": "Regions",
"type": "SHAPE",
"lineWidth": 2,
"lineColor": "#FFA500FF",
"fillColor": "#FFA50040"
},
{
"prefix": "[building]",
"name": "Buildings",
"type": "EXTRUDE",
"lineWidth": 2,
"lineColor": "#4682B4FF",
"fillColor": "#4682B440"
}
]
}
```
This example configuration creates 6 marker groups: one for `[poi]` signs, one for `[store]` signs, one for signs
where the prefix is a regex match for villages (e.g. `[Village]` or `[VILLAGE]`), one for `[trail]` signs, one for
`[region]` signs, and one for `[building]` signs.
## Troubleshooting
- **Editing a marker group's prefix (especially a `REGEX` prefix) orphans existing signs.** On servers running a
version before this fix, changing a group's prefix text can make already-placed signs vanish from the map after
`/bluemap reload`, and they won't come back on their own. Re-edit the sign's text (even re-typing the same text)
or restart the server to fix it. Signs created or re-edited on a version that ships this fix self-heal
automatically on `/bluemap reload` - no manual fix needed going forward.
- **Markers are hidden on maps whose `render-mask` excludes them.** A sign's marker only shows up on a given
BlueMap map if the sign's position is inside that map's own `render-mask` (configured in
`config/bluemap/maps/.conf`) - e.g. a nether-roof map with `min-y: 127` won't show markers for signs placed
below y=127. A map with no `render-mask` is unaffected. **After upgrading to a version with this fix, run
`/bluemap reload` once** to sweep away any markers that were already showing on a map outside its render bounds -
a plain server restart alone does not trigger this sweep.