Class EventManager

java.lang.Object
scripting.EventManager

public class EventManager extends Object
事件腳本的頻道級管理器,負責載入、排程並驅動 scripts/event/<名稱>.js 的執行。

每個頻道對每個已啟用的事件腳本(自 2026-06-04 起改由 EventScriptManager.discoverEventScripts() 掃描 scripts/event/ 目錄自動載入, 原 net.sf.odinms.channel.events 設定鍵已移除) 持有一個 EventManager;其核心是一個 GraalJS Invocable, 透過 Timer.EventTimerautoEventTimer 呼叫腳本中的具名方法 (如 initsetupcancelSchedule)。

關鍵協作者:

  • EventInstanceManager:由 newInstance 建立,以 WeakHashMap 管理多個具名實例; 腳本透過 getInstanceByMap 等方法查詢實例。
  • ChannelServer:提供頻道號碼及 MapleMapFactory
  • MapleSquad:部分事件(如 Zakum、Horntail)以 Squad 組隊機制管控入場。
  • ScriptEnginesfresh 取得 GraalJS 引擎;serialized 包覆引擎以序列化並發存取。
  • Constructor Details

  • Method Details

    • cancel

      public void cancel()
    • schedule

      public ScheduledFuture<?> schedule(String methodName, long delay)
    • schedule

      public ScheduledFuture<?> schedule(String methodName, long delay, EventInstanceManager eim)
    • scheduleAtTimestampByAutoEventTimer

      public ScheduledFuture<?> scheduleAtTimestampByAutoEventTimer(String methodName, long timestamp)
    • scheduleAtTimestamp

      public ScheduledFuture<?> scheduleAtTimestamp(String methodName, long timestamp)
    • getChannel

      public int getChannel()
    • getChannelServer

      public ChannelServer getChannelServer()
    • getInstance

      public EventInstanceManager getInstance(String name)
    • getInstances

      public Collection<EventInstanceManager> getInstances()
    • newInstance

      public EventInstanceManager newInstance(String name)
    • disposeInstance

      public void disposeInstance(String name)
    • getIv

      public Invocable getIv()
    • setProperty

      public void setProperty(String key, String value)
    • getProperty

      public String getProperty(String key)
    • getProperties

      public final Properties getProperties()
    • getName

      public String getName()
    • startInstance

      public void startInstance()
    • startInstance_Solo

      public void startInstance_Solo(String mapid, MapleCharacter chr)
    • startInstance

      public void startInstance(String mapid, MapleCharacter chr)
    • startInstance_Party

      public void startInstance_Party(String mapid, MapleCharacter chr)
    • startInstance

      public void startInstance(MapleCharacter character, String leader)
    • startInstance_CharID

      public void startInstance_CharID(MapleCharacter character)
    • startInstance_CharMapID

      public void startInstance_CharMapID(MapleCharacter character)
    • startInstance

      public void startInstance(MapleCharacter character)
    • startInstance

      public void startInstance(MapleParty party, MapleMap map)
    • startInstance

      public void startInstance(MapleParty party, MapleMap map, int maxLevel)
    • startInstance_NoID

      public void startInstance_NoID(MapleParty party, MapleMap map)
    • startInstance_NoID

      public void startInstance_NoID(MapleParty party, MapleMap map, Exception old)
    • startInstance

      public void startInstance(EventInstanceManager eim, String leader)
    • startInstance

      public void startInstance(MapleSquad squad, MapleMap map)
    • startInstance

      public void startInstance(MapleSquad squad, MapleMap map, int questID)
    • warpAllPlayer

      public void warpAllPlayer(int from, int to)
    • getMapFactory

      public MapleMapFactory getMapFactory()
    • newMonsterStats

      public OverrideMonsterStats newMonsterStats()
    • newCharList

      public List<MapleCharacter> newCharList()
    • getMonster

      public MapleMonster getMonster(int id)
    • getReactor

      public MapleReactor getReactor(int id)
    • broadcastShip

      public void broadcastShip(int mapid, int effect, int mode)
    • broadcastYellowMsg

      public void broadcastYellowMsg(String msg)
    • broadcastServerMsg

      public void broadcastServerMsg(int type, String msg, boolean weather)
    • scheduleRandomEvent

      public boolean scheduleRandomEvent()
    • scheduleRandomEventInChannel

      public boolean scheduleRandomEventInChannel(int chz)
    • setWorldEvent

      public void setWorldEvent()
    • getChannelOnline

      public int getChannelOnline()
    • getTotalOnline

      public int getTotalOnline()
    • reloadDrops

      public void reloadDrops()