public class YOUR_PLUGIN_NAME : IPlugin
{
private static readonly ILog Log = Logger.GetLoggerInstanceForType();
public static event EventHandler<AreaChangedArgs> AreaChanged;
public async Task<bool> Logic(string type, params dynamic[] param)
{
if (type == "core_area_changed_event")
{
uint oldSeed = (uint) param[0];
uint newSeed = (uint) param[1];
DatWorldAreaWrapper oldArea = (DatWorldAreaWrapper) param[2];
DatWorldAreaWrapper newArea = (DatWorldAreaWrapper) param[3];
string oldAreaName = oldArea == null ? "null" : oldArea.Name;
string newAreaName = newArea == null ? "null" : newArea.Name;
Log.DebugFormat("[YOUR_PLUGIN_NAME] Rising AreaChangedEvent. Old seed: {0}, New seed: {1}, Old area: \"{2}\", New area: \"{3}\".",
oldSeed, newSeed, oldAreaName, newAreaName);
OnAreaChanged(new AreaChangedArgs(oldSeed, newSeed, oldAreaName, newAreaName));
}
return false;
}
private static void OnAreaChanged(AreaChangedArgs e)
{
var handler = AreaChanged;
if (handler != null) handler(null, e);
}
public class AreaChangedArgs : EventArgs
{
public uint OldSeed { get; private set; }
public uint NewSeed { get; private set; }
public string OldAreaName { get; private set; }
public string NewAreaName { get; private set; }
public AreaChangedArgs(uint oldSeed, uint newSeed, string oldAreaName, string newAreaName)
{
OldSeed = oldSeed;
NewSeed = newSeed;
OldAreaName = oldAreaName;
NewAreaName = newAreaName;
}
}
... rest of IPlugin stuff