MapArt hinzugefügt
59
MapArt.md
Normal file
59
MapArt.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# MapArt
|
||||
|
||||
Das MapArt-Modul ermöglicht es, externe Bilder (URLs) direkt auf Ingame-Karten zu rendern und diese in einem Raster (z.B. 3x3) an Wänden zu platzieren. Das System ist hochperformant durch asynchrones Laden und ein intelligentes Caching-Verfahren.
|
||||
|
||||
## ✨ Funktionen
|
||||
|
||||
- **Raster-Generierung:** Erstellt automatisch ein Gitter aus Item-Frames und Karten.
|
||||
- **Asynchrones Laden:** Der Server laggt nicht, während Bilder aus dem Internet geladen werden.
|
||||
- **Tile-Caching:** Bilder werden nur einmal heruntergeladen und im RAM für alle Karten-Segmente bereitgehalten.
|
||||
- **Persistenz:** Platzierte Bilder werden in der `mapart.yml` gespeichert und nach einem Server-Neustart automatisch wiederhergestellt.
|
||||
- **Unsichtbare Rahmen:** Das System nutzt unsichtbare und fixierte Item-Frames für einen sauberen Look.
|
||||
|
||||
## 🎮 Befehle & Rechte
|
||||
|
||||
**Berechtigung:** `nexuslobby.mapart`
|
||||
|
||||
| Befehl | Beschreibung |
|
||||
|--------|--------------|
|
||||
| `/mapart <URL> <Breite>x<Höhe>` | Erstellt ein Bild-Raster an der Wand, die du ansiehst. |
|
||||
| `/mapart delete [Radius]` | Löscht MapArt-Elemente in deiner Nähe (Standard-Radius: 3). |
|
||||
|
||||
### Beispiel
|
||||
|
||||
Um ein Bild im Format 3 Blöcke breit und 2 Blöcke hoch zu platzieren:
|
||||
```bash
|
||||
/mapart https://beispiel.de/bild.png 3x2
|
||||
```
|
||||
|
||||
## 🔧 Technische Details
|
||||
|
||||
### Koordinaten-Berechnung
|
||||
|
||||
Das System berechnet die Ausbreitung des Rasters basierend auf der Blickrichtung (`BlockFace`) des Spielers:
|
||||
|
||||
- Die Wand wird per **RayTracing** (max. 5 Blöcke Distanz) ermittelt.
|
||||
- Das Raster wird von der Mitte aus nach rechts und nach unten aufgebaut.
|
||||
|
||||
### Speicherung (`mapart.yml`)
|
||||
|
||||
Jede generierte Karte wird mit ihrer ID und ihrer relativen Position im Gesamtbild gespeichert:
|
||||
```yaml
|
||||
active_maps:
|
||||
'42':
|
||||
url: "https://link.de/image.png"
|
||||
x: 0
|
||||
y: 0
|
||||
totalW: 3
|
||||
totalH: 2
|
||||
```
|
||||
|
||||
### RAM-Schutz (Loading Shield)
|
||||
|
||||
Um den Server vor Überlastung zu schützen (z.B. wenn 50 Karten gleichzeitig dasselbe Bild laden wollen), verhindert ein `loadingShield`, dass dieselbe URL mehrfach parallel angefragt wird. Sobald das Bild einmal geladen und in Kacheln (128x128 Pixel) zerschnitten wurde, bedient sich jede Karte aus dem `tileCache`.
|
||||
|
||||
## ⚠️ Einschränkungen
|
||||
|
||||
- Aktuell werden nur vertikale Wände unterstützt.
|
||||
- Die URL muss direkt auf eine Bilddatei (PNG, JPG) verweisen.
|
||||
- Zu große Raster (z.B. 20x20) können beim ersten Laden kurzzeitig die Netzwerk-Bandbreite beanspruchen.
|
||||
Reference in New Issue
Block a user