39 lines
1.3 KiB
C#
39 lines
1.3 KiB
C#
public class MinEventActionClearMapRebirth : MinEventActionTargetedBase
|
|
{
|
|
private const BindingFlags _NonPublicFlags = BindingFlags.NonPublic | BindingFlags.Instance;
|
|
|
|
public override void Execute(MinEventParams _params)
|
|
{
|
|
ClearMap(this.targets[0] as EntityPlayer);
|
|
}
|
|
|
|
public static void ClearMap(EntityPlayer player)
|
|
{
|
|
if (player != null
|
|
&& player.ChunkObserver != null
|
|
&& player.ChunkObserver.mapDatabase != null)
|
|
ClearMapChunkDatabase(player.ChunkObserver.mapDatabase as MapChunkDatabase);
|
|
}
|
|
|
|
private static void ClearMapChunkDatabase(MapChunkDatabase mapDatabase)
|
|
{
|
|
mapDatabase.catalog.Clear();
|
|
mapDatabase.database.Clear();
|
|
mapDatabase.dirty.Clear();
|
|
/*
|
|
var type = typeof(MapChunkDatabase).BaseType;
|
|
|
|
var catalog = (DictionaryKeyList<int, int>)type.GetField("catalog", _NonPublicFlags).GetValue(mapDatabase);
|
|
if (catalog != null)
|
|
catalog.Clear();
|
|
|
|
var database = (DictionarySave<int, ushort[]>)type.GetField("database", _NonPublicFlags).GetValue(mapDatabase);
|
|
if (database != null)
|
|
database.Clear();
|
|
|
|
var dirty = (Dictionary<int, bool>)type.GetField("dirty", _NonPublicFlags).GetValue(mapDatabase);
|
|
if (dirty != null)
|
|
dirty.Clear();
|
|
*/
|
|
}
|
|
} |