Plugins

A plugin is an extension that adds additional features or functionality to Studio. You can find and install community-made plugins, manage your plugins, or create and publish your own.

Finding Plugins in the Creator Marketplace

To find community-made plugins:

  1. Click the Toolbox button in the View tab to open the Toolbox.

  2. Click the Marketplace tab and select Plugins from the dropdown menu.

Managing Plugins

To manage a plugin after you install it:

  1. Click the Manage Plugins button in the Plugins tab to open the Plugins Management window.

  2. For the plugin you want to manage, use the following options.

    1. Update – Update the plugin to its latest published version. If this button isn't visible, the plugin is up-to-date.
    2. Active – Toggles whether the plugin is active or not.
    3. Details / Uninstall – Opens a menu to view the plugin's details or uninstall it.

Creating New Plugins

You can create your own plugins to improve your workflow in Studio. The following code sample is a plugin called EmptyScriptAdder that inserts an empty script as the child of an object or in ServerScriptService. The following sections explain the major parts to creating this plugin.

EmptyScriptAdder Plugin

1local ChangeHistoryService = game:GetService("ChangeHistoryService")
2local Selection = game:GetService("Selection")
3
4-- Create a new toolbar section titled "Custom Script Tools"
5local toolbar = plugin:CreateToolbar("Custom Script Tools")
6
7-- Add a toolbar button named "Create Empty Script"
8local newScriptButton = toolbar:CreateButton("Create Empty Script", "Create an empty script", "rbxassetid://4458901886")
9
10-- Make button clickable even if 3D viewport is hidden
11newScriptButton.ClickableWhenViewportHidden = true
12
13local function onNewScriptButtonClicked()
14 local selectedObjects = Selection:Get()
15 local parent = game:GetService("ServerScriptService")
16 if #selectedObjects > 0 then
17 parent = selectedObjects[1]
18 end
19
20 local newScript = Instance.new("Script")
21 newScript.Source = ""
22 newScript.Parent = parent
23 ChangeHistoryService:SetWaypoint("Added new empty script")
24end
25
26newScriptButton.Click:Connect(onNewScriptButtonClicked)
27

Saving a Plugin Script

Plugins start from scripts. To create a plugin, create a Script and save it as a plugin using the Explorer. For example, to create the EmptyScriptAdder Plugin:

  1. Insert a new Script inside ServerStorage and rename it to EmptyScriptAdder.

  2. Copy and paste the EmptyScriptAdder Plugin code into the new script.

  3. Right-click the script in the Explorer and select Save as Local Plugin.

  4. In the popup window, click Save to insert the plugin script into your local Plugins folder of the Studio installation. The Output window indicates that the plugin successfully saved and the plugin runs for the first time after you save it.

Adding a Toolbar Button

To add a button for your plugin to the Plugins tab of the Studio toolbar, use the Plugin:CreateToolbar() and PluginToolbar:CreateButton() methods. In the code for EmptyScriptAdder, line 5 creates a new section in the toolbar named Custom Script Tools and line 8 creates a button named Create Empty Script.

Executing Code on Click

To make the plugin execute code when a user clicks the toolbar button, connect a function to the button's PluginToolbarButton.Click event. In the code for EmptyScriptAdder, the connecting function is onNewScriptButtonClicked.

Checking User Selection

To modify a plugin's behavior based on what the user has selected, use the Selection service. The onNewScriptButtonClicked function checks if the user has anything selected and creates the new script as its child instead of inside ServerScriptService. If the user doesn't have anything selected, it creates the new script in ServerScriptService.

Supporting Undo and Redo

To give users the ability to undo and redo changes that a plugin makes, set waypoints using the ChangeHistoryService. After every action in Studio, such as dragging a part or inserting a new object, Studio automatically adds a new waypoint. When you undo an action, Studio returns to a previous waypoint and undoes everything that happened after that waypoint.

Plugins don't add new waypoints by default. If a plugin makes a change to a place and the user activates Undo, Studio undoes the last non-plugin action and everything the plugin did. To make sure Studio cleanly undoes a plugin's action, call the ChangeHistoryService:SetWaypoint() method after performing an action. In the code for EmptyScriptAdder, line 23 calls ChangeHistoryService:SetWaypoint() and passes a string description for the waypoint.

Uploading Plugins

As with places and models, you can upload plugins to Roblox to make them easy to reuse from the Toolbox.

  1. Right-click the plugin script in the Explorer and select Publish as Plugin. The Asset Configuration window opens.

  2. If you want, upload a 512×512 image by clicking the image in the upper-left corner of the window.

  3. Enter a title and description for the plugin to describe what the plugin does.

  4. For the Creator field, select one of the following options. You can't change this after you publish the plugin.

    1. Select Me to retain personal ownership.
    2. Select a group to collaborate on the plugin with members of that group.
  5. When you're ready, click the Submit button. Your plugin is now available to you in the Inventory tab of the Toolbox.

Publishing Plugins

Publishing a plugin gives other creators the permission to install the plugin from the Creator Marketplace and Toolbox. You can publish a plugin when you upload it to Roblox. If you want to publish a plugin after you've already uploaded it, see Publishing Assets.