Maps

Contributor2 min readUpdated

In short

The world map

Each feature is a setting on the Map page (Rares & travel, Zones), and none of them makes a frame or loads data until it's on. The icon layers (dungeon entrances, flight masters maps.taxiPins, docks maps.dockPins, inns maps.innPins, and maps.travelMinimap for the minimap) default to off. The flight timer and the instance tracker are set under Quality of Life.

  • Unexplored areas (maps.reveal: off | on | tint, Maps/Reveal.lua): textures on one frame of Polestar's on each map frame's canvas (the world map, and the battlefield map once Blizzard loads it), watched through MapCanvas (Nav) once the setting is first on, faded with the map's global alpha (the battlefield map's opacity). ZoneArt.FullOverlays returns the overlay table only when it was built for the art the client shows (art ID and tile size). Maps.UnexploredOverlays subtracts the client's explored list (GetExploredMapTextures, matched on offset and size, since it returns no overlay IDs). An explored overlay is always left to Blizzard, so isShownByMouseOver overlays stay hover-only. The tiles are split by ZoneArt.EachOverlayTile, as MapExplorationDataProvider splits them, onto one frame at the exploration pin frame level. tint multiplies them by the Theme token mapUnexplored. The tiles are painted again as the map opens or changes, on MAP_EXPLORATION_UPDATED and on theme changes.
  • Coordinates: the world map's info bar shows the player and the cursor (maps.coords, Maps/WorldMap.lua). maps.minimapCoords adds a readout at the bottom of the minimap (Maps/Coords.lua, 5 Hz, repainted only when the tenth changes). Both use Maps.FormatCoords.
  • Minimap button (maps.minimapButton, off by default; Maps/MinimapButton.lua): click fires TOGGLE_FRAME, right-click SHOW_OPTIONS, a drag moves it around the minimap's edge and saves maps.minimapButtonAngle (degrees, 0 = east). A square minimap (GetMinimapShape) puts it on the square's edge, and a resized one (OnSizeChanged) moves it to the new edge. No frame exists until the setting is first turned on.
  • Zone level ranges (maps.zoneLevels): labels on continent maps, and the hovered zone's range in the info bar. The ranges come from maps build (tools/lib/maps/zonelevels.js). Forever-only zones (maps with Forever frames and no Era frames in map-frames.json) are held to the sparse thresholds, because every source records them thinly.
  • Dungeon entrances (maps.dungeonPins, Maps/Dungeons.lua): a Pins layer maps.dungeons built from the Codex pack's instances, since dungeons.json isn't license-clean and the core ships no entrances. The Codex is loaded the first time the world map opens with the setting on, or the layer is built on CODEX_LOADED. A click opens the dungeon's page in the hub (Polestar.Dungeons.Open(key)); with the Dungeons module off, or on Shift-click, it sets a Nav waypoint.
Was this page helpful?

Start with, or act

  • PlayersInstall and first run
  • PlayersCommunity guides
  • PlayersFAQ
  • Guide authorsWriting a community guide
  • Guide authorsGuide format cheatsheet
  • ContributorsContributing
  • ActionCopy the AddOns folder (Windows)C:\Program Files (x86)\World of Warcraft\_classic_beta_\Interface\AddOns
  • ActionCopy the AddOns folder (macOS)/Applications/World of Warcraft/_classic_beta_/Interface/AddOns
  • ActionFind an optionEvery setting with its default; type its name here to jump to it.
  • ActionEvery slash command