Reflection Metadata

Note:This page has been written for users running the Windows Operating System in mind. The process is presumably similar for Mac users.
This page is about the Reflection Metadata and its uses. For the actual file used on the wiki, see API:Class_reference/ReflectionMetadata.

What is the Reflection Metadata?[edit]

The Reflection Metadata is a special XML file that can be found in Roblox Studio's directory folder. It stores configurable information about classes.

To be more precise, it controls the following:

  • The visibility of objects in the Explorer window
  • The icons of objects in the Explorer window and Advanced Objects window.
  • The visibility and summary of classes & members in the Object Browser window.

Locating the Reflection Metadata[edit]

As stated earlier, the Reflection Metadata is located in Roblox Studio's directory folder.

To find this folder, you'll want to find a shortcut to Roblox Studio on your desktop. Once you find it, right click on it and press Open File Location.

In this folder, you should see a file called "ReflectionMetadata.xml".

RFMDirectory.png

If the file is only labeled as "ReflectionMetadata" with no extension, you may want to change your settings.

Importing the Reflection Metadata[edit]

Just a disclaimer before you start editing: You need to be very careful.
If you incorrectly edit the ReflectionMetadata, it can cause the Explorer to stop working, and it could potentially crash Roblox Studio.

With that said, lets begin!

While you could just crack open the .xml file and manually edit it from there, thats kind of a tedious process. Instead, lets actually insert the file as a model!

  • Right click on ReflectionMetadata.xml
  • Press Copy, and then paste it somewhere you can easily navigate to.
  • Rename the file to ReflectionMetadata.rbxmx
  • Go into Roblox Studio, and open a new place.
  • Right click on the Workspace icon.pngWorkspace and press "Insert from File..."
  • Navigate to the ReflectionMetadata.rbxmx file, select it, and press Open.


You should now see two objects in the Workspace icon.pngWorkspace.

When you open them, you'll find a ton of objects pertaining to classes, enums, members, and more!

RFMImported.png

The Reflection Metadata currently makes use of the following objects:


To give you a pseudo idea of how these classes are actually used together:

  • Tree-collapse.png
    ReflectionMetadataEnums
    ReflectionMetadataEnums
    • Tree-collapse.png
      ReflectionMetadataEnum
      ReflectionMetadataEnum
      • Expand.png
        ReflectionMetadataEnumItem
        ReflectionMetadataEnumItem
  • Tree-collapse.png
    ReflectionMetadataClasses
    ReflectionMetadataClasses
    • Tree-collapse.png
      ReflectionMetadataClass
      ReflectionMetadataClass
      • Tree-collapse.png
        ReflectionMetadataCallbacks
        ReflectionMetadataCallbacks
        • ReflectionMetadataMember
          ReflectionMetadataMember
        • ReflectionMetadataMember
          ReflectionMetadataMember
      • Tree-collapse.png
        ReflectionMetadataEvents
        ReflectionMetadataEvents
        • ReflectionMetadataMember
          ReflectionMetadataMember
        • ReflectionMetadataMember
          ReflectionMetadataMember
      • Tree-collapse.png
        ReflectionMetadataFunctions
        ReflectionMetadataFunctions
        • ReflectionMetadataMember
          ReflectionMetadataMember
        • ReflectionMetadataMember
          ReflectionMetadataMember
      • Tree-collapse.png
        ReflectionMetadataProperties
        ReflectionMetadataProperties
        • ReflectionMetadataMember
          ReflectionMetadataMember
        • ReflectionMetadataMember
          ReflectionMetadataMember
      • Tree-collapse.png
        ReflectionMetadataYieldFunctions
        ReflectionMetadataYieldFunctions
        • ReflectionMetadataMember
          ReflectionMetadataMember
        • ReflectionMetadataMember
          ReflectionMetadataMember

Editing the Reflection Metadata[edit]

Disclaimer:Modifying the Reflection Metadata is not supported by Roblox.

For the purpose of focusing on actually making changes to an object's visibility and icon, lets just focus on the Pages.pngReflectionMetadataClass object. This object has several properties, and we'll go over all of the important ones.

ExplorerImageIndex[edit]

This controls the icon of the class, depending on its index value.
The index value must conform to 0 <= index <= 91, or else the Explorer will crash.
The following is a list of indexes, and what icons they correspond to:
ExplorerImageIndex reference
Index Icon Notes
0 Object blank Icon.png
1 Part icon.png
2 Model icon.png
3 ExplorerImageIndex3.png Unused
4 Value icon.png
5 Camera icon.png
6 Script icon.png
7 Decal icon.png
8 Mesh icon.png
9 Humanoid icon.png
10 Texture icon.png
11 Sound icon.png
12 Player icon.png
13 Lighting icon.png
14 BodyForce icon.png
15 ExplorerImageIndex15.png
16 Networkclient icon.png
17 Tool icon.png
18 Localscript icon.png
19 Workspace icon.png
20 Starterpack icon.png
21 Players icon.png
22 HopperBin icon.png
23 Teams icon.png
24 Team icon.png
25 Spawnlocation icon.png
26 ExplorerImageIndex26.png
27 ExplorerImageIndex27.png Unused
28 Sky icon.png
29 NetworkReplicator icon.png
30 Debris icon.png
31 Soundservice icon.png
32 Accoutrement icon.png
33 Message icon.png
34 Weld icon.png
35 Seat icon.png
36 Explosion icon.png
37 Forcefield icon.png
38 Flag icon.png
39 Flagstand icon.png
40 Shirtgraphic icon.png
41 Clickdetector icon.png
42 Sparkles icon.png
43 Shirt icon.png
44 Pants icon.png
45 Hat icon.png
46 StarterGui icon.png
47 Screengui icon.png
48 Frame icon.png
49 Imagelabel icon.png
50 Textlabel icon.png
51 Textbutton icon.png
52 Imagebutton icon.png
53 Handles icon.png
54 Slectionbox icon.png
55 Surfaceselection icon.png
56 Archandles icon.png
57 Selectionlasso icon.png
58 Configuration icon.png
59 Smoke icon.png
60 Animation icon.png
61 Fire icon.png
62 Dialog icon.png
63 DialogChoice icon.png
64 BillboardGui icon.png
65 Terrain icon.png
66 Function Icon.png
67 ExplorerImageIndex67.png
68 TestService icon.png
69 ExplorerImageIndex69.png
70 ExplorerImageIndex70.png
71 ExplorerImageIndex71.png
72 ExplorerImageIndex72.png
73 ExplorerImageIndex73.png
74 ExplorerImageIndex74.png
75 ExplorerImageIndex75.png
76 ExplorerImageIndex76.png
77 ExplorerImageIndex77.png
78 ExplorerImageIndex78.png
79 ExplorerImageIndex79.png
80 ExplorerImageIndex80.png
81 ExplorerImageIndex81.png
82 ExplorerImageIndex82.png
83 ExplorerImageIndex83.png
84 ExplorerImageIndex84.png
85 ExplorerImageIndex85.png
86 ExplorerImageIndex86.png
87 ExplorerImageIndex87.png
88 ExplorerImageIndex88.png
89 ExplorerImageIndex89.png
90 ExplorerImageIndex90.png
91 ExplorerImageIndex91.png
92 ExplorerImageIndex92.png
93 ExplorerImageIndex93.png

ExplorerOrder[edit]

This controls how classes are sorted in the Explorer. Classes with lower numbers are displayed more towards the top of the Explorer, while classes with higher numbers are displayed more towards the bottom of the Explorer. If its value is -1, this object is invisible to the Explorer.

Browsable[edit]

Toggles whether or not this class can be seen in the Object Browser.

Deprecated[edit]

Toggles whether or not this class is Deprecated.

PreferredParent[edit]

Sets the class that this class wants to be parented to, if added from the Advanced Objects window without the user selecting anything. This can be set to multiple classes if the string uses multiple lines.

Insertable[edit]

Toggles whether or not this object can be inserted through the Advanced Objects window.

Saving the Reflection Metadata[edit]

Once you've made all of the changes you like:

  • Select both the Pages.pngReflectionMetadataClasses and Pages.pngReflectionMetadataEnums objects that are in the Workspace icon.pngWorkspace.
  • Right click them, and press Save to File...
  • Save them to the .rbxmx file you opened earlier
  • Rename the file to ReflectionMetadata.xml
  • Delete the existing ReflectionMetadata.xml file in Roblox Studio's directory
  • Paste the new ReflectionMetadata.xml in its place.

Keeping a modified Reflection Metadata file persistent[edit]

One of the annoying things about modding the ReflectionMetadata file, is that Roblox Studio likes to verify and overwrite modified files when the launcher is ran.
To work around this, CloneTrooper1019 wrote a 3rd party mod manager for Roblox Studio.
It provides you with a separate folder that has a similar structure to the one seen in Roblox Studio's folder directory, and when the launcher is ran, it will directly run the main program rather than the launcher.

The launcher will only run when Roblox Studio has to be updated.

You can find it here: https://github.com/CloneTrooper1019/Roblox-Studio-Mod-Manager