1
MapArt
M_Viper edited this page 2026-01-23 11:10:55 +00:00

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:

/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:

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.