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)type.GetField("catalog", _NonPublicFlags).GetValue(mapDatabase); if (catalog != null) catalog.Clear(); var database = (DictionarySave)type.GetField("database", _NonPublicFlags).GetValue(mapDatabase); if (database != null) database.Clear(); var dirty = (Dictionary)type.GetField("dirty", _NonPublicFlags).GetValue(mapDatabase); if (dirty != null) dirty.Clear(); */ } }