Class MapleMapFactory

java.lang.Object
server.maps.MapleMapFactory

public class MapleMapFactory extends Object
依頻道(channel)隔離的地圖工廠,負責從 WZ 資料懶載入並快取 MapleMap 實體。

每個 ChannelServer 持有一個本類別實體(透過頻道 ID 識別)。 getMap(int) 在首次取用時以 MapleDataProviderFactory 讀取 /Map.wz/String.wz,解析地形(MapleFoothold)、 傳送門(MaplePortal)、NPC、怪物生成點、反應爐、節點路徑等 WZ 資料, 建立完整的 MapleMap 並存入內部 maps 快取(ReentrantLock 保護), 後續呼叫直接回傳快取結果,無需重複解析。 另提供 instanceMap 用於活動副本地圖(獨立不共享)的管理。 本類別是整個 server.maps 子系統的主要進入點,所有腳本與伺服器端邏輯 皆透過 c.getClient().getChannelServer().getMapFactory().getMap(id) 取得地圖。

  • Constructor Details

    • MapleMapFactory

      public MapleMapFactory(int channel)
  • Method Details

    • getMap

      public final MapleMap getMap(int mapid)
    • getMap

      public final MapleMap getMap(int mapid, boolean respawns, boolean npcs)
    • getMap

      public final MapleMap getMap(int mapid, boolean respawns, boolean npcs, boolean reactors)
    • getInstanceMap

      public MapleMap getInstanceMap(int instanceid)
    • removeInstanceMap

      public void removeInstanceMap(int instanceid)
    • removeMap

      public void removeMap(int instanceid)
    • CreateInstanceMap

      public MapleMap CreateInstanceMap(int mapid, boolean respawns, boolean npcs, boolean reactors, int instanceid)
    • getLoadedMaps

      public int getLoadedMaps()
    • isMapLoaded

      public boolean isMapLoaded(int mapId)
    • isInstanceMapLoaded

      public boolean isInstanceMapLoaded(int instanceid)
    • clearLoadedMap

      public void clearLoadedMap()
    • getAllLoadedMaps

      public List<MapleMap> getAllLoadedMaps()
    • getAllMapThreadSafe

      public Collection<MapleMap> getAllMapThreadSafe()
    • getAllMaps

      public Collection<MapleMap> getAllMaps()
    • setChannel

      public void setChannel(int channel)
    • destroyMap

      public boolean destroyMap(int mapid)
    • destroyMap

      public boolean destroyMap(int mapid, boolean Remove)
    • HealMap

      public void HealMap(int mapid)