-
Notifications
You must be signed in to change notification settings - Fork 0
/
search-doc-1709333662706.json
1 lines (1 loc) · 191 KB
/
search-doc-1709333662706.json
1
[{"title":"CoffeeTable","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/CoffeeTable","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"CoffeeTable","url":"/roblox-sparkles-docs/api/CoffeeTable#functions","content":" "},{"title":"new","type":1,"pageTitle":"CoffeeTable","url":"/roblox-sparkles-docs/api/CoffeeTable#new","content":"</> CoffeeTable.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"CashRegister","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/CashRegister","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"CashRegister","url":"/roblox-sparkles-docs/api/CashRegister#functions","content":" "},{"title":"_activatedFunction","type":1,"pageTitle":"CashRegister","url":"/roblox-sparkles-docs/api/CashRegister#_activatedFunction","content":"</> CashRegister._activatedFunction( self: table,-- The furniture self class playerWhoTriggered: Player -- The player who triggered this prop activation function ) → () "},{"title":"new","type":1,"pageTitle":"CashRegister","url":"/roblox-sparkles-docs/api/CashRegister#new","content":"</> CashRegister.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"Counter","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/Counter","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"Counter","url":"/roblox-sparkles-docs/api/Counter#functions","content":" "},{"title":"new","type":1,"pageTitle":"Counter","url":"/roblox-sparkles-docs/api/Counter#new","content":"</> Counter.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"CandySeatSmallA","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/CandySeatSmallA","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"CandySeatSmallA","url":"/roblox-sparkles-docs/api/CandySeatSmallA#functions","content":" "},{"title":"new","type":1,"pageTitle":"CandySeatSmallA","url":"/roblox-sparkles-docs/api/CandySeatSmallA#new","content":"</> CandySeatSmallA.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"ActionRequiredController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/ActionRequiredController","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"ActionRequiredController","url":"/roblox-sparkles-docs/api/ActionRequiredController#properties","content":" "},{"title":"SCALE_AMOUNT","type":1,"pageTitle":"ActionRequiredController","url":"/roblox-sparkles-docs/api/ActionRequiredController#SCALE_AMOUNT","content":"</> ActionRequiredController.SCALE_AMOUNT: number The higher this number, the faster the alert UI will tween in and out. "},{"title":"DISAPPEAR_RANGE","type":1,"pageTitle":"ActionRequiredController","url":"/roblox-sparkles-docs/api/ActionRequiredController#DISAPPEAR_RANGE","content":"</> ActionRequiredController.DISAPPEAR_RANGE: number This range at which the alert UIs will automatically disappear. "},{"title":"Functions","type":1,"pageTitle":"ActionRequiredController","url":"/roblox-sparkles-docs/api/ActionRequiredController#functions","content":" "},{"title":"DestroyAlert","type":1,"pageTitle":"ActionRequiredController","url":"/roblox-sparkles-docs/api/ActionRequiredController#DestroyAlert","content":"This item only works when running on the client. Client </> ActionRequiredController:DestroyAlert( id: number-- What alert should be removed respective to its id. ) → nil Use this to remove alerts from the player. "},{"title":"CreateAlert","type":1,"pageTitle":"ActionRequiredController","url":"/roblox-sparkles-docs/api/ActionRequiredController#CreateAlert","content":"This item only works when running on the client. Client </> ActionRequiredController:CreateAlert( adornee: BasePart ,-- Where the alert should go. autoGoaway: boolean-- If yes, will go away on its own when player is in proximity. ) → nil Use this to create alerts to draw attention from the player. "},{"title":"KnitStart","type":1,"pageTitle":"ActionRequiredController","url":"/roblox-sparkles-docs/api/ActionRequiredController#KnitStart","content":"</> ActionRequiredController:KnitStart() → nil Start ActionRequiredController "},{"title":"DialogController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/DialogController","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"DialogController","url":"/roblox-sparkles-docs/api/DialogController#properties","content":" "},{"title":"TEXTBOX_MAX_LINES","type":1,"pageTitle":"DialogController","url":"/roblox-sparkles-docs/api/DialogController#TEXTBOX_MAX_LINES","content":"</> DialogController.TEXTBOX_MAX_LINES: number Max lines of dialog shown "},{"title":"TYPEWRITER_SPEED","type":1,"pageTitle":"DialogController","url":"/roblox-sparkles-docs/api/DialogController#TYPEWRITER_SPEED","content":"</> DialogController.TYPEWRITER_SPEED: number How quickly each letter should come in when typing dialog. "},{"title":"Functions","type":1,"pageTitle":"DialogController","url":"/roblox-sparkles-docs/api/DialogController#functions","content":" "},{"title":"KnitInit","type":1,"pageTitle":"DialogController","url":"/roblox-sparkles-docs/api/DialogController#KnitInit","content":"This item only works when running on the client. Client </> DialogController:KnitInit() → nil Initialize DialogController "},{"title":"Hide","type":1,"pageTitle":"DialogController","url":"/roblox-sparkles-docs/api/DialogController#Hide","content":"This item only works when running on the client. Client </> DialogController:Hide() → nil Run this to hide dialog UI. "},{"title":"ShowDialog","type":1,"pageTitle":"DialogController","url":"/roblox-sparkles-docs/api/DialogController#ShowDialog","content":"This item only works when running on the client. Client </> DialogController:ShowDialog( text: string,-- The text you want to display. shouldHide: boolean,-- If the dialog sequence should hide when done. waitTime: number,-- The pause in seconds after the dialog finishes. showSkip: boolean,-- If skipping should be allowed. moveHigher: boolean-- If dialog sequence needs to be moved higher. ) → {boolean} Run this whenever you want to show a dialog text. "},{"title":"KnitStart","type":1,"pageTitle":"DialogController","url":"/roblox-sparkles-docs/api/DialogController#KnitStart","content":"This item only works when running on the client. Client </> DialogController:KnitStart() → nil Start DialogController "},{"title":"CustomerController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/CustomerController","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"CustomerController","url":"/roblox-sparkles-docs/api/CustomerController#functions","content":" "},{"title":"KnitInit","type":1,"pageTitle":"CustomerController","url":"/roblox-sparkles-docs/api/CustomerController#KnitInit","content":"This item only works when running on the client. Client </> CustomerController:KnitInit() → () Initialize CustomerController "},{"title":"KnitStart","type":1,"pageTitle":"CustomerController","url":"/roblox-sparkles-docs/api/CustomerController#KnitStart","content":"This item only works when running on the client. Client </> CustomerController:KnitStart() → () Start CustomerController "},{"title":"CategoryGuide","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/CategoryGuide","content":"On this page CategoryGuide Author: Calvin Gray Date: 01/04/2024 Project: roblox-sparkles Description: Return the full list of tagged items for sub-categories.","keywords":""},{"title":"CurrencyController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/CurrencyController","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"CurrencyController","url":"/roblox-sparkles-docs/api/CurrencyController#properties","content":" "},{"title":"CurrencyUpdated","type":1,"pageTitle":"CurrencyController","url":"/roblox-sparkles-docs/api/CurrencyController#CurrencyUpdated","content":"</> CurrencyController.CurrencyUpdated: signal CurrencyUpdated is a signal that is a member of CurrencyController - it fires with the currency that was updated + the new value whenever a currency on the client updates "},{"title":"Functions","type":1,"pageTitle":"CurrencyController","url":"/roblox-sparkles-docs/api/CurrencyController#functions","content":" "},{"title":"KnitInit","type":1,"pageTitle":"CurrencyController","url":"/roblox-sparkles-docs/api/CurrencyController#KnitInit","content":"This item only works when running on the client. Client </> CurrencyController:KnitInit() → nil Initialize CurrencyController "},{"title":"KnitStart","type":1,"pageTitle":"CurrencyController","url":"/roblox-sparkles-docs/api/CurrencyController#KnitStart","content":"This item only works when running on the client. Client </> CurrencyController:KnitStart() → nil Start CurrencyController "},{"title":"DataController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/DataController","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"DataController","url":"/roblox-sparkles-docs/api/DataController#properties","content":" "},{"title":"DATA_LOAD_TIMEOUT","type":1,"pageTitle":"DataController","url":"/roblox-sparkles-docs/api/DataController#DATA_LOAD_TIMEOUT","content":"</> DataController.DATA_LOAD_TIMEOUT: number The max amount of time to wait for the playerdata to be cached on the client (From the server) on init before timing out and rejecting any associated promises/fallback behavior "},{"title":"Functions","type":1,"pageTitle":"DataController","url":"/roblox-sparkles-docs/api/DataController#functions","content":" "},{"title":"GetData","type":1,"pageTitle":"DataController","url":"/roblox-sparkles-docs/api/DataController#GetData","content":"This item only works when running on the client. Client This is a yielding function. When called, it will pause the Lua thread that called the function until a result is ready to be returned, without interrupting other scripts. Yields </> DataController:GetData() → Promise<T>-- Returns a promise that resolves with the playerdata/rejects if unable to get playerdata Returns a promise that resolves with the playerdata once successfully loaded for the first time, and rejects if the player's data cannot be retrieved for some reason "},{"title":"GetKey","type":1,"pageTitle":"DataController","url":"/roblox-sparkles-docs/api/DataController#GetKey","content":"This item only works when running on the client. Client </> DataController:GetKey( Key: string-- The key that you want to lookup in the player data table ) → Promise<T>-- Returns a promise that resolves w/the value from the player's data, and rejects if the player's data could not be loaded in time and/or the key does not exist Returns a promise that resolves with a specific value (Looked up by key) from the playerdata, and rejects if the playerdata was unable to be loaded/the key does not exist "},{"title":"GetKeyUpdatedSignal","type":1,"pageTitle":"DataController","url":"/roblox-sparkles-docs/api/DataController#GetKeyUpdatedSignal","content":"This item only works when running on the client. Client This is a yielding function. When called, it will pause the Lua thread that called the function until a result is ready to be returned, without interrupting other scripts. Yields </> DataController:GetKeyUpdatedSignal( Key: string-- The key that you want to lookup in the player data table. Can be a specific path if desired (Eg. "Currencies" to listen to currency changes as a whole or "Currencies.Coins" to listen to all coin changes) ) → Promise<T>-- Returns a promise that resolves w/a signal that fires when the specific key is updated, and rejects if the playerdata isn't loaded in-time Returns a signal that fires (With the value) when the Key argument in the playerdata is updated "},{"title":"GetArrayUpdatedSignal","type":1,"pageTitle":"DataController","url":"/roblox-sparkles-docs/api/DataController#GetArrayUpdatedSignal","content":"This item only works when running on the client. Client This is a yielding function. When called, it will pause the Lua thread that called the function until a result is ready to be returned, without interrupting other scripts. Yields </> DataController:GetArrayUpdatedSignal( Key: string-- The key that you want to lookup in the player data table. Can be a specific path if desired (Eg. "Currencies" to listen to currency changes as a whole or "Currencies.Coins" to listen to all coin changes) ) → Promise<T>-- Returns a promise that resolves w/a signal that fires with the action, array index, and new or old value when the key has an entry added/removed to/from the array, and rejects if the playerdata isn't loaded in-time Returns a signal that fires when a new entry is added/removed/set to/from an array "},{"title":"DisconnectKeyUpdatedSignal","type":1,"pageTitle":"DataController","url":"/roblox-sparkles-docs/api/DataController#DisconnectKeyUpdatedSignal","content":"This item only works when running on the client. Client </> DataController:DisconnectKeyUpdatedSignal( Key: string-- The key to disconnect - can be a specific path if desired (Eg. "Currencies" to disconnect a signal for "Currencies" or "Currencies.Coins" to disconnect the "Coins" signal) ) → nil Removes a data updated connection from the table Warning: Will disconnect all events tied to that key! "},{"title":"KnitInit","type":1,"pageTitle":"DataController","url":"/roblox-sparkles-docs/api/DataController#KnitInit","content":"</> DataController:KnitInit() → nil Initialize DataController Get the replica of the playerdata from the server, and then set the cachedPlayerdata varaible as the replica "},{"title":"KnitStart","type":1,"pageTitle":"DataController","url":"/roblox-sparkles-docs/api/DataController#KnitStart","content":"</> DataController:KnitStart() → nil Start DataController "},{"title":"CounterCorner","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/CounterCorner","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"CounterCorner","url":"/roblox-sparkles-docs/api/CounterCorner#functions","content":" "},{"title":"new","type":1,"pageTitle":"CounterCorner","url":"/roblox-sparkles-docs/api/CounterCorner#new","content":"</> CounterCorner.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"CurrencyService","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/CurrencyService","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"CurrencyService","url":"/roblox-sparkles-docs/api/CurrencyService#functions","content":" "},{"title":"AddCurrency","type":1,"pageTitle":"CurrencyService","url":"/roblox-sparkles-docs/api/CurrencyService#AddCurrency","content":"</> CurrencyService:AddCurrency( Player: Player ,-- The player to add currency to currencyType: string,-- The type of currency to add to the player amount: number-- The amount of currency to add to the player ) → Promise<T>-- Returns a promise that resolves with the player's new currency amount, and rejects with a table (Two keys are set under the table: Reason: string and Message: string) if the currency cannot be added for some reason Adds currency to a specific player "},{"title":"SubtractCurrency","type":1,"pageTitle":"CurrencyService","url":"/roblox-sparkles-docs/api/CurrencyService#SubtractCurrency","content":"</> CurrencyService:SubtractCurrency( Player: Player ,-- The player to deduct currency from currencyType: string,-- The type of currency to deduct from the player amount: number-- The amount of currency to deduct from the player ) → Promise<T>-- Returns a promise that resolves with the player's new currency amount, and rejects with a table (Two keys are set under the table: Reason: string and Message: string) if the transaction cannot be completed for some reason Subtracts currency from a specific player "},{"title":"KnitInit","type":1,"pageTitle":"CurrencyService","url":"/roblox-sparkles-docs/api/CurrencyService#KnitInit","content":"This item only works when running on the server. Server </> CurrencyService:KnitInit() → nil Initialize CurrencyService "},{"title":"KnitStart","type":1,"pageTitle":"CurrencyService","url":"/roblox-sparkles-docs/api/CurrencyService#KnitStart","content":"This item only works when running on the server. Server </> CurrencyService:KnitStart() → nil Start CurrencyService "},{"title":"DataTemplate","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/DataTemplate","content":"","keywords":""},{"title":"Types","type":1,"pageTitle":"DataTemplate","url":"/roblox-sparkles-docs/api/DataTemplate#types","content":" "},{"title":"Playerdata","type":1,"pageTitle":"DataTemplate","url":"/roblox-sparkles-docs/api/DataTemplate#Playerdata","content":"</> interface Playerdata { _build: string-- The version of the game that this player's data was last saved with } The default playerdata template for new players "},{"title":"Properties","type":1,"pageTitle":"DataTemplate","url":"/roblox-sparkles-docs/api/DataTemplate#properties","content":" "},{"title":"name","type":1,"pageTitle":"DataTemplate","url":"/roblox-sparkles-docs/api/DataTemplate#name","content":"</> DataTemplate.name: KEYS_TO_IGNORE An array of strings to ignore w/replication to clients "},{"title":"CandySeatLarge","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/CandySeatLarge","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"CandySeatLarge","url":"/roblox-sparkles-docs/api/CandySeatLarge#functions","content":" "},{"title":"new","type":1,"pageTitle":"CandySeatLarge","url":"/roblox-sparkles-docs/api/CandySeatLarge#new","content":"</> CandySeatLarge.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"DogBoneBench","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/DogBoneBench","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"DogBoneBench","url":"/roblox-sparkles-docs/api/DogBoneBench#functions","content":" "},{"title":"new","type":1,"pageTitle":"DogBoneBench","url":"/roblox-sparkles-docs/api/DogBoneBench#new","content":"</> DogBoneBench.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"CandySeatSmallB","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/CandySeatSmallB","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"CandySeatSmallB","url":"/roblox-sparkles-docs/api/CandySeatSmallB#functions","content":" "},{"title":"new","type":1,"pageTitle":"CandySeatSmallB","url":"/roblox-sparkles-docs/api/CandySeatSmallB#new","content":"</> CandySeatSmallB.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"DressStand","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/DressStand","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"DressStand","url":"/roblox-sparkles-docs/api/DressStand#functions","content":" "},{"title":"new","type":1,"pageTitle":"DressStand","url":"/roblox-sparkles-docs/api/DressStand#new","content":"</> DressStand.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"EasingLibrary","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/EasingLibrary","content":"On this page EasingLibrary Adapted from Tweener's easing functions (Penner's Easing Equations) and http://code.google.com/p/tweener/ (jstweener javascript version) Disclaimer for Robert Penner's Easing Equations license: TERMS OF USE - EASING EQUATIONS Open source under the BSD License. Copyright © 2001 Robert Penner All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the author nor the names of contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.","keywords":""},{"title":"BuildScreenController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/BuildScreenController","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#functions","content":" "},{"title":"GetStates","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#GetStates","content":"This item only works when running on the client. Client </> BuildScreenController:GetStates() → {isVisible: Fusion.StateObject<boolean>} This is a REQUIRED method for all screens It is responsible for returning the current states "},{"title":"Show","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#Show","content":"This item only works when running on the client. Client </> BuildScreenController:Show() → () This is a REQUIRED method for all screens It is responsible for showing this screenGui Example Usage: MainGuiController:ShowScreen("Template") will automatically call THIS function AND also CLOSE the other visible screens "},{"title":"Hide","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#Hide","content":"This item only works when running on the client. Client </> BuildScreenController:Hide() → () This is a REQUIRED method for all screens It is responsible for hiding this screenGui Example Usage: MainGuiController:HideScreen("Template") will automatically call THIS function AND also CLOSE the other visible screens "},{"title":"HideTutorialArrow","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#HideTutorialArrow","content":"</> BuildScreenController:HideTutorialArrow() → nil Exclusively hide tutorial arrow for the shelf object. "},{"title":"ShowTutorialArrow","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#ShowTutorialArrow","content":"</> BuildScreenController:ShowTutorialArrow( name: string,-- Name of category or item isCategory: boolean-- True if is a category, false if is an item. ) → nil Select a category to show the tutorial arrow in. "},{"title":"SelectCategory","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#SelectCategory","content":"</> BuildScreenController:SelectCategory( category: string-- name of category ) → nil Select a furniture category and show furniture buttons of that category "},{"title":"ToggleDonutTutorialOn","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#ToggleDonutTutorialOn","content":"</> BuildScreenController:ToggleDonutTutorialOn() → nil Prompts the player to access the area during tutorial for donuts. "},{"title":"PlaceRegisterTutorial","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#PlaceRegisterTutorial","content":"</> BuildScreenController:PlaceRegisterTutorial() → nil Prompts the player to access the area during tutorial for the cash register. "},{"title":"SetScrollingFrameSize","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#SetScrollingFrameSize","content":"</> BuildScreenController:SetScrollingFrameSize() → nil Automatically scale the scrolling frame to fit the number of items "},{"title":"ShowFurnitureCategories","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#ShowFurnitureCategories","content":"</> BuildScreenController:ShowFurnitureCategories() → nil Show furniture category buttons "},{"title":"SelectButton","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#SelectButton","content":"</> BuildScreenController:SelectButton(button: ImageButton ) → nil Select a button "},{"title":"ClearSelection","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#ClearSelection","content":"</> BuildScreenController:ClearSelection() → nil Clear the current selection option "},{"title":"UpdateEnchantmentStock","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#UpdateEnchantmentStock","content":"This item only works when running on the client. Client </> BuildScreenController:UpdateEnchantmentStock() → nil This function runs to update what enchantments are available to the player. "},{"title":"OpenEnchants","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#OpenEnchants","content":"This item only works when running on the client. Client </> BuildScreenController:OpenEnchants() → nil This function opens the enchants menu remotely. "},{"title":"OpenBuildScreen","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#OpenBuildScreen","content":"This item only works when running on the client. Client </> BuildScreenController:OpenBuildScreen() → nil Open build screen "},{"title":"OpenStockingMenu","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#OpenStockingMenu","content":"This item only works when running on the client. Client </> BuildScreenController:OpenStockingMenu() → nil Open shelf stocking menu "},{"title":"KnitInit","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#KnitInit","content":"This item only works when running on the client. Client </> BuildScreenController:KnitInit() → nil Initialize BuildScreenController "},{"title":"MouseClickedEnchant","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#MouseClickedEnchant","content":"This item only works when running on the client. Client </> BuildScreenController:MouseClickedEnchant() → nil Handles functionality for client-side enchantment clicking and checking. "},{"title":"KnitStart","type":1,"pageTitle":"BuildScreenController","url":"/roblox-sparkles-docs/api/BuildScreenController#KnitStart","content":"This item only works when running on the client. Client </> BuildScreenController:KnitStart() → nil Start BuildScreenController "},{"title":"FoodDisplay","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/FoodDisplay","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"FoodDisplay","url":"/roblox-sparkles-docs/api/FoodDisplay#functions","content":" "},{"title":"new","type":1,"pageTitle":"FoodDisplay","url":"/roblox-sparkles-docs/api/FoodDisplay#new","content":"</> FoodDisplay.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"EnchantController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/EnchantController","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"EnchantController","url":"/roblox-sparkles-docs/api/EnchantController#functions","content":" "},{"title":"StartEnchanting","type":1,"pageTitle":"EnchantController","url":"/roblox-sparkles-docs/api/EnchantController#StartEnchanting","content":"</> EnchantController:StartEnchanting( enchantName: string-- name of enchantment ) → nil Start enchant mode "},{"title":"StopEnchanting","type":1,"pageTitle":"EnchantController","url":"/roblox-sparkles-docs/api/EnchantController#StopEnchanting","content":"</> EnchantController:StopEnchanting() → nil Stop enchant mode "},{"title":"KnitStart","type":1,"pageTitle":"EnchantController","url":"/roblox-sparkles-docs/api/EnchantController#KnitStart","content":"</> EnchantController:KnitStart() → nil Start EnchantController "},{"title":"NightStand","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/NightStand","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"NightStand","url":"/roblox-sparkles-docs/api/NightStand#functions","content":" "},{"title":"new","type":1,"pageTitle":"NightStand","url":"/roblox-sparkles-docs/api/NightStand#new","content":"</> NightStand.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"HeartStand","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/HeartStand","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"HeartStand","url":"/roblox-sparkles-docs/api/HeartStand#functions","content":" "},{"title":"new","type":1,"pageTitle":"HeartStand","url":"/roblox-sparkles-docs/api/HeartStand#new","content":"</> HeartStand.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"LuxurySofa","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/LuxurySofa","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"LuxurySofa","url":"/roblox-sparkles-docs/api/LuxurySofa#functions","content":" "},{"title":"new","type":1,"pageTitle":"LuxurySofa","url":"/roblox-sparkles-docs/api/LuxurySofa#new","content":"</> LuxurySofa.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"LargePawRug","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/LargePawRug","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"LargePawRug","url":"/roblox-sparkles-docs/api/LargePawRug#functions","content":" "},{"title":"new","type":1,"pageTitle":"LargePawRug","url":"/roblox-sparkles-docs/api/LargePawRug#new","content":"</> LargePawRug.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"Furniture","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/Furniture","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"Furniture","url":"/roblox-sparkles-docs/api/Furniture#properties","content":" "},{"title":"GRID_UNIT","type":1,"pageTitle":"Furniture","url":"/roblox-sparkles-docs/api/Furniture#GRID_UNIT","content":"</> Furniture.GRID_UNIT: number Grid unit for snapping prop placement "},{"title":"FURNITURE_TAG","type":1,"pageTitle":"Furniture","url":"/roblox-sparkles-docs/api/Furniture#FURNITURE_TAG","content":"</> Furniture.FURNITURE_TAG: string String pattern used for identifying hitboxes assigned to a specific shop owner "},{"title":"InventoryController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/InventoryController","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"InventoryController","url":"/roblox-sparkles-docs/api/InventoryController#functions","content":" "},{"title":"GetAmountOwned","type":1,"pageTitle":"InventoryController","url":"/roblox-sparkles-docs/api/InventoryController#GetAmountOwned","content":"</> InventoryController:GetAmountOwned( itemName: string-- Name of item ) → Promise<T>-- promise that resolves with number owned, nil if not unlocked Get amount owned of specified item "},{"title":"KnitStart","type":1,"pageTitle":"InventoryController","url":"/roblox-sparkles-docs/api/InventoryController#KnitStart","content":"</> InventoryController:KnitStart() → nil Start InventoryController "},{"title":"GlassDisplay","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/GlassDisplay","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"GlassDisplay","url":"/roblox-sparkles-docs/api/GlassDisplay#functions","content":" "},{"title":"new","type":1,"pageTitle":"GlassDisplay","url":"/roblox-sparkles-docs/api/GlassDisplay#new","content":"</> GlassDisplay.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"Items","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/Items","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"Items","url":"/roblox-sparkles-docs/api/Items#properties","content":" "},{"title":"name","type":1,"pageTitle":"Items","url":"/roblox-sparkles-docs/api/Items#name","content":"</> Items.name: IGNORE_DEMAND_METRIC If true, all product demand metrics will be set to 1 / (number of products) !! SET TO FALSE BEFORE RELEASE !! "},{"title":"HeartBench","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/HeartBench","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"HeartBench","url":"/roblox-sparkles-docs/api/HeartBench#functions","content":" "},{"title":"new","type":1,"pageTitle":"HeartBench","url":"/roblox-sparkles-docs/api/HeartBench#new","content":"</> HeartBench.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"FlightController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/FlightController","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"FlightController","url":"/roblox-sparkles-docs/api/FlightController#properties","content":" "},{"title":"FLIGHT_TOGGLE_WINDOW_TIME","type":1,"pageTitle":"FlightController","url":"/roblox-sparkles-docs/api/FlightController#FLIGHT_TOGGLE_WINDOW_TIME","content":"</> FlightController.FLIGHT_TOGGLE_WINDOW_TIME: number How quick the player needs to activate the jump button (In seconds) (Eg. Double tapping the spacebar within X amount of time) to enable/disable flight mechanics Important note: Double-jump to fly is only available on non-mobile devices! Mobile devices change flight mode by pressing the flight button "},{"title":"WING_DAMPING_RATIO","type":1,"pageTitle":"FlightController","url":"/roblox-sparkles-docs/api/FlightController#WING_DAMPING_RATIO","content":"</> FlightController.WING_DAMPING_RATIO: number Damping ratio for wing flap spring "},{"title":"WING_FREQUENCY","type":1,"pageTitle":"FlightController","url":"/roblox-sparkles-docs/api/FlightController#WING_FREQUENCY","content":"</> FlightController.WING_FREQUENCY: number Frequency for wing flap spring "},{"title":"WING_FLAP_CYCLE_TIME","type":1,"pageTitle":"FlightController","url":"/roblox-sparkles-docs/api/FlightController#WING_FLAP_CYCLE_TIME","content":"</> FlightController.WING_FLAP_CYCLE_TIME: number How long it takes (Baseline idle cycle) for the wings to either open or close "},{"title":"WING_IDLE_SPEED_MULTIPLIER","type":1,"pageTitle":"FlightController","url":"/roblox-sparkles-docs/api/FlightController#WING_IDLE_SPEED_MULTIPLIER","content":"</> FlightController.WING_IDLE_SPEED_MULTIPLIER: number How much the flap speed should be adjusted (Number >= 1 = increase in flap speed, number <= 1 = decrease in flap speed) when the player is not moving "},{"title":"WING_MOVING_SPEED_MULTIPLIER","type":1,"pageTitle":"FlightController","url":"/roblox-sparkles-docs/api/FlightController#WING_MOVING_SPEED_MULTIPLIER","content":"</> FlightController.WING_MOVING_SPEED_MULTIPLIER: number How much the flap speed should be adjusted (Number >= 1 = increase in flap speed, number <= 1 = decrease in flap speed) when the player is moving "},{"title":"IDLE_SPEED","type":1,"pageTitle":"FlightController","url":"/roblox-sparkles-docs/api/FlightController#IDLE_SPEED","content":"</> FlightController.IDLE_SPEED: number The speed at which the player must be moving at (or slower than) for the idle animation to trigger (When the player is not actively trying to move) "},{"title":"CAMERA_PITCH_INCREMENTS","type":1,"pageTitle":"FlightController","url":"/roblox-sparkles-docs/api/FlightController#CAMERA_PITCH_INCREMENTS","content":"</> FlightController.CAMERA_PITCH_INCREMENTS: number Snapping unit (In degrees) for when to send updates to the server about the player's camera pitch angle (To avoid excessive network traffic) "},{"title":"Functions","type":1,"pageTitle":"FlightController","url":"/roblox-sparkles-docs/api/FlightController#functions","content":" "},{"title":"_toggleFlightSetting","type":1,"pageTitle":"FlightController","url":"/roblox-sparkles-docs/api/FlightController#_toggleFlightSetting","content":"</> FlightController:_toggleFlightSetting( isEnabled: boolean-- Is the player flying or not? ) → () Toggles whether the player animations should be enabled for flight (And other associated behavior) "},{"title":"_characterAdded","type":1,"pageTitle":"FlightController","url":"/roblox-sparkles-docs/api/FlightController#_characterAdded","content":"</> FlightController:_characterAdded() → () Disables default animation controller for player and replaces w/animations from FlightAnimations "},{"title":"_renderPlayerWings","type":1,"pageTitle":"FlightController","url":"/roblox-sparkles-docs/api/FlightController#_renderPlayerWings","content":"</> FlightController:_renderPlayerWings( Player: Player -- The player to render wings for ) → () Renders the wings for a player "},{"title":"KnitInit","type":1,"pageTitle":"FlightController","url":"/roblox-sparkles-docs/api/FlightController#KnitInit","content":"</> FlightController:KnitInit() → () Initialize FlightController "},{"title":"KnitStart","type":1,"pageTitle":"FlightController","url":"/roblox-sparkles-docs/api/FlightController#KnitStart","content":"</> FlightController:KnitStart() → () Start FlightController "},{"title":"NPCController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/NPCController","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"NPCController","url":"/roblox-sparkles-docs/api/NPCController#functions","content":" "},{"title":"CreateNPC","type":1,"pageTitle":"NPCController","url":"/roblox-sparkles-docs/api/NPCController#CreateNPC","content":"</> NPCController:CreateNPC( NPCParameters: table | string,-- Parameters specific to the NPC. If a string (NPC appearance name) is provided, a default NPC will be created with that appearance Replica: [Replica]?-- Replica class (If a NPC created by the server) ) → Promise<T>-- Returns a promise that resolves with the newly created NPC class if successfully created, and rejects if it cannot be created Creates a new NPC "},{"title":"KnitInit","type":1,"pageTitle":"NPCController","url":"/roblox-sparkles-docs/api/NPCController#KnitInit","content":"This item only works when running on the client. Client </> NPCController:KnitInit() → () Initialize NPCController "},{"title":"KnitStart","type":1,"pageTitle":"NPCController","url":"/roblox-sparkles-docs/api/NPCController#KnitStart","content":"This item only works when running on the client. Client </> NPCController:KnitStart() → () Start NPCController "},{"title":"MainGuiController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/MainGuiController","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"MainGuiController","url":"/roblox-sparkles-docs/api/MainGuiController#functions","content":" "},{"title":"GetControllerFromScreenName","type":1,"pageTitle":"MainGuiController","url":"/roblox-sparkles-docs/api/MainGuiController#GetControllerFromScreenName","content":"This item only works when running on the client. Client </> MainGuiController:GetControllerFromScreenName( screenName: string-- name of the screen: E.g. "BuildScreen" or "BuildScreenController" ) → ANY_TABLE Get a particular controller based on given screen name "},{"title":"ShowScreen","type":1,"pageTitle":"MainGuiController","url":"/roblox-sparkles-docs/api/MainGuiController#ShowScreen","content":"This item only works when running on the client. Client </> MainGuiController:ShowScreen( screenName: string,-- name of the screen: E.g. "BuildScreen" or "BuildScreenController" closeOtherScreens: boolean-- set to true to close all the other screens ) → () Show a particular screen "},{"title":"HideScreen","type":1,"pageTitle":"MainGuiController","url":"/roblox-sparkles-docs/api/MainGuiController#HideScreen","content":"This item only works when running on the client. Client </> MainGuiController:HideScreen( screenName: string-- name of the screen: E.g. "BuildScreen" or "BuildScreenController" ) → () Hide a particular screen "},{"title":"HideAllScreens","type":1,"pageTitle":"MainGuiController","url":"/roblox-sparkles-docs/api/MainGuiController#HideAllScreens","content":"This item only works when running on the client. Client </> MainGuiController:HideAllScreens() → () Hide ALL screens "},{"title":"ToggleScreen","type":1,"pageTitle":"MainGuiController","url":"/roblox-sparkles-docs/api/MainGuiController#ToggleScreen","content":"This item only works when running on the client. Client </> MainGuiController:ToggleScreen( screenName: string,-- name of the screen: E.g. "BuildScreen" or "BuildScreenController" leaveOtherScreensOpen: boolean,-- set to true to leave other screens open when toggling exception: boolean-- if true screen will open no matter what ) → () Toggle a particular screen "},{"title":"GetVisibilityState","type":1,"pageTitle":"MainGuiController","url":"/roblox-sparkles-docs/api/MainGuiController#GetVisibilityState","content":"This item only works when running on the client. Client </> MainGuiController:GetVisibilityState( screenName: string-- name of the screen: E.g. "BuildScreen" or "BuildScreenController" ) → any Get visibility state of a screen Returns visibility state of a particular screen Example: local buildScreenVisible = MainGuiController:GetVisibilityState("BuildScreen") print(buildScreenVisible:get()) -- will print true/false "},{"title":"KnitInit","type":1,"pageTitle":"MainGuiController","url":"/roblox-sparkles-docs/api/MainGuiController#KnitInit","content":"This item only works when running on the client. Client </> MainGuiController:KnitInit() → nil Initialize MainGuiController "},{"title":"KnitStart","type":1,"pageTitle":"MainGuiController","url":"/roblox-sparkles-docs/api/MainGuiController#KnitStart","content":"This item only works when running on the client. Client </> MainGuiController:KnitStart() → nil Start MainGuiController "},{"title":"NPCAppearances","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/NPCAppearances","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"NPCAppearances","url":"/roblox-sparkles-docs/api/NPCAppearances#properties","content":" "},{"title":"EMOTIONS","type":1,"pageTitle":"NPCAppearances","url":"/roblox-sparkles-docs/api/NPCAppearances#EMOTIONS","content":"</> NPCAppearances.EMOTIONS: table Key/pair table of emotions and their associated imagery/behavior with the NPCs Keys: _image: string -- The emotion/reaction icon _animation: string? -- Animation to play (Optional) _emotionTime: number -- How long the emotion should play for before resetting to the customer's behavior "},{"title":"NotificationController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/NotificationController","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"NotificationController","url":"/roblox-sparkles-docs/api/NotificationController#properties","content":" "},{"title":"NOTIFICATION_SHOW_TIME","type":1,"pageTitle":"NotificationController","url":"/roblox-sparkles-docs/api/NotificationController#NOTIFICATION_SHOW_TIME","content":"</> NotificationController.NOTIFICATION_SHOW_TIME: number The amount of time in seconds notifications should show for. "},{"title":"Functions","type":1,"pageTitle":"NotificationController","url":"/roblox-sparkles-docs/api/NotificationController#functions","content":" "},{"title":"ShowError","type":1,"pageTitle":"NotificationController","url":"/roblox-sparkles-docs/api/NotificationController#ShowError","content":"</> NotificationController:ShowError( Message: string,-- The contents of the message to display to the player callbackBehavior: string?-- (Optional) A specific behavior to fire on the client relating to this notification (NOT ENABLED) ) → boolean-- Returns a boolean indicating whether the message was successfully processed or not Shows an error message on the client "},{"title":"ShowWarning","type":1,"pageTitle":"NotificationController","url":"/roblox-sparkles-docs/api/NotificationController#ShowWarning","content":"</> NotificationController:ShowWarning( Message: string,-- The contents of the message to display to the player callbackBehavior: string?-- (Optional) A specific behavior to fire on the client relating to this notification (NOT ENABLED) ) → boolean-- Returns a boolean indicating whether the message was successfully processed or not Shows a warning message on the client "},{"title":"ShowInformation","type":1,"pageTitle":"NotificationController","url":"/roblox-sparkles-docs/api/NotificationController#ShowInformation","content":"</> NotificationController:ShowInformation( Message: string,-- The contents of the message to display to the player callbackBehavior: string?-- (Optional) A specific behavior to fire on the client relating to this notification (NOT ENABLED) ) → boolean-- Returns a boolean indicating whether the message was successfully processed or not Shows an informational message on the client "},{"title":"KnitInit","type":1,"pageTitle":"NotificationController","url":"/roblox-sparkles-docs/api/NotificationController#KnitInit","content":"</> NotificationController:KnitInit() → nil Initialize NotificationController "},{"title":"KnitStart","type":1,"pageTitle":"NotificationController","url":"/roblox-sparkles-docs/api/NotificationController#KnitStart","content":"</> NotificationController:KnitStart() → nil Start NotificationController "},{"title":"CameraController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/CameraController","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"CameraController","url":"/roblox-sparkles-docs/api/CameraController#properties","content":" "},{"title":"CAMERA_FREQUENCY","type":1,"pageTitle":"CameraController","url":"/roblox-sparkles-docs/api/CameraController#CAMERA_FREQUENCY","content":"</> CameraController.CAMERA_FREQUENCY: number The frequency of the camera spring "},{"title":"CustomerService","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/CustomerService","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#properties","content":" "},{"title":"CUSTOMER_SPAWN_LOCATION_DEBOUNCE","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#CUSTOMER_SPAWN_LOCATION_DEBOUNCE","content":"</> CustomerService.CUSTOMER_SPAWN_LOCATION_DEBOUNCE: number How long a spawn location (Randomly selected) cannot spawn another customer on top for (Eg. A 5 second debounce) "},{"title":"CUSTOMER_RANDOM_SHOPPING_LIST_QUANTITY","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#CUSTOMER_RANDOM_SHOPPING_LIST_QUANTITY","content":"</> CustomerService.CUSTOMER_RANDOM_SHOPPING_LIST_QUANTITY: number How many randomly selected items the customer should want to purchase when joining the game "},{"title":"CUSTOMER_SPAWN_DEBOUNCE_TIME","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#CUSTOMER_SPAWN_DEBOUNCE_TIME","content":"</> CustomerService.CUSTOMER_SPAWN_DEBOUNCE_TIME: number How long before CustomerService will attempt to generate another random customer "},{"title":"MAX_CUSTOMERS_IN_MAP","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#MAX_CUSTOMERS_IN_MAP","content":"</> CustomerService.MAX_CUSTOMERS_IN_MAP: number How many randomly generated customers are allowed in the map at any given moment "},{"title":"CUSTOMER_SEARCH_TIME","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#CUSTOMER_SEARCH_TIME","content":"</> CustomerService.CUSTOMER_SEARCH_TIME: number How long a customer plays the searching animation for before proceeding w/the next action "},{"title":"RANDOM_WAYPOINT_RADIUS","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#RANDOM_WAYPOINT_RADIUS","content":"</> CustomerService.RANDOM_WAYPOINT_RADIUS: number How many studs (Divided by two) max on the X/Z axis from a waypoint's position the desired position can be Eg. Radius is 10 Position += Vector3.new(randomNumber:NextNumber(-RANDOM_WAYPOINT_RADIUS/2,RANDOM_WAYPOINT_RADIUS/2),0,randomNumber:NextNumber(-RANDOM_WAYPOINT_RADIUS/2,RANDOM_WAYPOINT_RADIUS/2)) "},{"title":"CUSTOMER_VIP_CHANCE","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#CUSTOMER_VIP_CHANCE","content":"</> CustomerService.CUSTOMER_VIP_CHANCE: number The chance of a customer spawning w/a VIP item request (Awards additional money on customer purchase to the shop owner) Number is picked based on Random:NextInteger(1,CUSTOMER_VIP_CHANCE) Eg. CUSTOMER_VIP_CHANCE is 10, there's a 10% chance that a customer spawned will be a VIP CUSTOMER_VIP_CHANCE is 1, all customers will be VIPs "},{"title":"HERO_SPAWN_TIME","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#HERO_SPAWN_TIME","content":"</> CustomerService.HERO_SPAWN_TIME: number How often (In seconds) a hero NPC (Eg. Jade Ballroom) should spawn in Note: If all available hero NPCs are spawned in at a given moment, a random regular NPC will spawn instead (And another attempt will be made at spawning a hero after time has passed) "},{"title":"MAX_CART_RESHUFFLES","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#MAX_CART_RESHUFFLES","content":"</> CustomerService.MAX_CART_RESHUFFLES: number How many cart reshuffles (A NPC not finding any products/items after searching nearby stores) until the NPC is destroyed "},{"title":"CUSTOMER_VIP_MULTIPLIER","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#CUSTOMER_VIP_MULTIPLIER","content":"</> CustomerService.CUSTOMER_VIP_MULTIPLIER: number If an item selected by a customer is marked as a VIP item, multiply the NPCSalePrice variable by this number "},{"title":"Functions","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#functions","content":" "},{"title":"GenerateCustomer","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#GenerateCustomer","content":"</> CustomerService:GenerateCustomer( Replication: table,-- An array of players to replicate this customer to - if no table is provided (nil), then the customer will replicate to all clients Origin: CFrame? ,-- (Optional) The starting CFrame of the customer NPC. If Origin is nil, a random spawn location will be selected rigName: string?,-- The type of rig to use for the customer NPC (Optional - if not provided, will default to random regular NPC) forceTargetStore: string?,-- (Optional) Force the NPC to go to a specific store. If this variable exists, the total customer limit is overridden forceTargetItem: string?-- (Optional) Forces a specific item onto the NPC's shopping list that they're required to purchase. If this variable exists, the total customer limit is overridden ) → Promise<T>-- Returns a promise that resolves with the new customer table and the total amount of customers (Separate returns) and rejects if it cannot Generates a new customer class "},{"title":"DestroyCustomer","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#DestroyCustomer","content":"</> CustomerService:DestroyCustomer( CustomerID: string-- The customer ID to destroy ) → Promise<T>-- Returns a promise that resolves if the customer was deleted successfully and rejects if it cannot Destroys an existing customer class "},{"title":"AddItemToShoppingList","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#AddItemToShoppingList","content":"</> CustomerService:AddItemToShoppingList( CustomerID: string,-- The unique ID of the customer itemId: string,-- The item ID that you want to add to the customer's shopping list itemQuantity: number-- (Optional) The amount of copies of the item that you want to add to the customer's shopping list ) → Promise<T>-- Returns a promise that resolves with the current shopping list, or rejects if it cannot be added to the shopping list for some reason Adds a new item (Or multiple of the same item) to a customer's shopping list The customer will then search stores to see if they carry that item, and if they do, it will be purchased "},{"title":"AddRandomItemsToShoppingList","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#AddRandomItemsToShoppingList","content":"</> CustomerService:AddRandomItemsToShoppingList( CustomerID: string,-- The unique ID of the customer itemQuantity: number-- (Optional) The amount of copies of the item that you want to add to the customer's shopping list - default to 1 ) → table-- Returns a key/pair table (item name/quantity) of what the NPC wants to purchase Adds a new random item (Or multiple) to the customer's shopping list The customer will then search stores to see if they carry those item(s), and if they do, it will be purchased "},{"title":"RemoveItemFromShoppingList","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#RemoveItemFromShoppingList","content":"</> CustomerService:RemoveItemFromShoppingList( CustomerID: string,-- The unique ID of the customer itemId: string,-- The item ID that you want to remove from the customer's shopping list itemQuantity: number-- (Optional) The amount of copies of the item that you want to remove from the customer's shopping list ) → Promise<T>-- Returns a promise that resolves with the current shopping list and new item count (two variables), or rejects if it cannot be removed for some reason Removes an item from the customer's shopping list "},{"title":"AddItemToCart","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#AddItemToCart","content":"</> CustomerService:AddItemToCart( CustomerID: string,-- The unique ID of the customer itemId: string,-- The item ID that you want to add to the customer's cart itemQuantity: number-- (Optional) The amount of copies of the item that you want to add to the customer's cart ) → Promise<T>-- Returns a promise that resolves with the current cart and new item count (two variables), or rejects if it cannot be added to the cart for some reason Adds a new item (Or multiple of the same item) to a customer's cart "},{"title":"RemoveItemFromCart","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#RemoveItemFromCart","content":"</> CustomerService:RemoveItemFromCart( CustomerID: string,-- The unique ID of the customer itemId: string,-- The item ID that you want to remove from the customer's cart itemQuantity: number-- The amount of copies of the item that you want to remove from the customer's cart ) → Promise<T>-- Returns a promise that resolves with the current cart and new item count (two variables), or rejects if it cannot be removed from the cart for some reason Removes an item (Or multiple of the same item) from a customer's cart "},{"title":"PurchaseItemsInCart","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#PurchaseItemsInCart","content":"</> CustomerService:PurchaseItemsInCart( CustomerID: string,-- The ID of the customer storeOwner: Player -- The owner of the store ) → boolean,table-- Returns whether the items were successfully sold, and if so, the list of currencies/values awarded. If this function errors, the 2nd return argument will be a string explaining the error "Purchases" the items in a player's cart and credits the storeOwner player with the equivalent amount of credits "},{"title":"NavigateToPoint","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#NavigateToPoint","content":"</> CustomerService:NavigateToPoint( CustomerID: string,-- The ID of the customer Position: CFrame -- The desired position/orientation of the NPC ) → Promise<T>-- Returns a promise that resolves if the NPC reaches the desired point, and rejects if it does not Returns a promise that resolves when the NPC reaches the point desired, and rejects if it cannot be reached "},{"title":"KnitInit","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#KnitInit","content":"This item only works when running on the server. Server </> CustomerService:KnitInit() → nil Initialize CustomerService "},{"title":"KnitStart","type":1,"pageTitle":"CustomerService","url":"/roblox-sparkles-docs/api/CustomerService#KnitStart","content":"This item only works when running on the server. Server </> CustomerService:KnitStart() → nil Start CustomerService "},{"title":"PlanterFurniture","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/PlanterFurniture","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"PlanterFurniture","url":"/roblox-sparkles-docs/api/PlanterFurniture#functions","content":" "},{"title":"new","type":1,"pageTitle":"PlanterFurniture","url":"/roblox-sparkles-docs/api/PlanterFurniture#new","content":"</> PlanterFurniture.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"PlayerdataService.Client","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/PlayerdataService.Client","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"PlayerdataService.Client","url":"/roblox-sparkles-docs/api/PlayerdataService.Client#functions","content":" "},{"title":"SetTutorialFinished","type":1,"pageTitle":"PlayerdataService.Client","url":"/roblox-sparkles-docs/api/PlayerdataService.Client#SetTutorialFinished","content":"This item only works when running on the server. Server </> PlayerdataService.Client:SetTutorialFinished( Player: Player -- The player invoking the function ) → nil Sets the tutorial to completed on the server. "},{"title":"PetTower","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/PetTower","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"PetTower","url":"/roblox-sparkles-docs/api/PetTower#functions","content":" "},{"title":"new","type":1,"pageTitle":"PetTower","url":"/roblox-sparkles-docs/api/PetTower#new","content":"</> PetTower.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"NPCService","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/NPCService","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"NPCService","url":"/roblox-sparkles-docs/api/NPCService#functions","content":" "},{"title":"GenerateNPC","type":1,"pageTitle":"NPCService","url":"/roblox-sparkles-docs/api/NPCService#GenerateNPC","content":"This item only works when running on the server. Server </> NPCService:GenerateNPC( Replication: {Player }?,-- Array of players that should be replicated to - will replicate to all players if nil Tags: {[string]: any}?,-- Optional list of tags Body: {[string]: any}-- Key/pair array of values to replicate ) → Promise<T>-- Returns a promise that resolves with the newly created NPC class if successful, and rejects if not Generate a new NPC class "},{"title":"NavigateToWorldPoint","type":1,"pageTitle":"NPCService","url":"/roblox-sparkles-docs/api/NPCService#NavigateToWorldPoint","content":"This item only works when running on the server. Server unreleased </> NPCService:NavigateToWorldPoint( npcID: string,-- The Replica ID of the NPC to control targetPosition: Vector3 -- A vector3 dictating where the NPC should go to ) → Promise<T>-- Returns a promise that resolves if the NPC's new path is successfully created/set/replicated, and rejects if it cannot be set Navigates an NPC class to a Vector3 point in the world "},{"title":"DestroyNPC","type":1,"pageTitle":"NPCService","url":"/roblox-sparkles-docs/api/NPCService#DestroyNPC","content":"This item only works when running on the server. Server </> NPCService:DestroyNPC( replicaId: string-- The ID of the NPC you want to destroy ) → Promise<T>-- Returns a promise that resolves if an NPC with the provided replicaId exists and is destroyed, and rejects if it cannot be found/destroyed Deletes a NPC class "},{"title":"KnitInit","type":1,"pageTitle":"NPCService","url":"/roblox-sparkles-docs/api/NPCService#KnitInit","content":"</> NPCService:KnitInit() → () Initialize NPCService "},{"title":"KnitStart","type":1,"pageTitle":"NPCService","url":"/roblox-sparkles-docs/api/NPCService#KnitStart","content":"</> NPCService:KnitStart() → () Start NPCService "},{"title":"LevelService","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/LevelService","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"LevelService","url":"/roblox-sparkles-docs/api/LevelService#functions","content":" "},{"title":"AddExperience","type":1,"pageTitle":"LevelService","url":"/roblox-sparkles-docs/api/LevelService#AddExperience","content":"</> LevelService:AddExperience( player: Player ,-- player to give exp to amount: number-- amount of exp ) → Promise<T>-- promise that resolves with the player's new experience if successfully set, and rejects otherwise Add experience points for player "},{"title":"KnitStart","type":1,"pageTitle":"LevelService","url":"/roblox-sparkles-docs/api/LevelService#KnitStart","content":"</> LevelService:KnitStart() → nil Start LevelService "},{"title":"CAMERA_DAMPING","type":1,"pageTitle":"CameraController","url":"/roblox-sparkles-docs/api/CameraController#CAMERA_DAMPING","content":"</> CameraController.CAMERA_DAMPING: number The damping of the camera spring "},{"title":"CAMERA_ROTATION_BOBBING_RANGE","type":1,"pageTitle":"CameraController","url":"/roblox-sparkles-docs/api/CameraController#CAMERA_ROTATION_BOBBING_RANGE","content":"</> CameraController.CAMERA_ROTATION_BOBBING_RANGE: number How much the camera should bob up and down when rotating around the center of the map (In studs) - uses sine wave "},{"title":"CAMERA_ROTATION_SPEED","type":1,"pageTitle":"CameraController","url":"/roblox-sparkles-docs/api/CameraController#CAMERA_ROTATION_SPEED","content":"</> CameraController.CAMERA_ROTATION_SPEED: number The speed at which the camera should rotate around the center of the map when camera mode is set to rotate around the center of the map (In degrees per second, converted to radians) "},{"title":"CAMERA_ROTATION_DEPTH","type":1,"pageTitle":"CameraController","url":"/roblox-sparkles-docs/api/CameraController#CAMERA_ROTATION_DEPTH","content":"</> CameraController.CAMERA_ROTATION_DEPTH: number The depth at which the camera should rotate around the center of the map when camera mode is set to rotate around the center of the map (In studs) "},{"title":"CAMERA_ROTATION_HEIGHT","type":1,"pageTitle":"CameraController","url":"/roblox-sparkles-docs/api/CameraController#CAMERA_ROTATION_HEIGHT","content":"</> CameraController.CAMERA_ROTATION_HEIGHT: number The height at which the camera should rotate around the center of the map when camera mode is set to rotate around the center of the map (In studs) "},{"title":"Functions","type":1,"pageTitle":"CameraController","url":"/roblox-sparkles-docs/api/CameraController#functions","content":" "},{"title":"TrackObject","type":1,"pageTitle":"CameraController","url":"/roblox-sparkles-docs/api/CameraController#TrackObject","content":"</> CameraController:TrackObject( targetPart: BasePart ,-- The target part to follow followHeight: number,-- The height (Relative to part position Y) to follow the part at followDistance: number,-- How far away distance-wise (X/Z) to follow the part from snapCamera: boolean?,-- If true, the camera will have the target spring position/goal set to the camera's cframe yieldUntilReached: boolean?,-- If true, the function will yield until the camera has reached the target position/orientation unlockWhenReachedTarget: boolean?,-- If true, the camera will unlock (Set back to custom camera type/disconnect render step bind) when it reaches the target position/orientation rotationOffset: CFrame? -- Optional rotation offset to apply to the camera CFrame (Relative to the part's position) ) → () This function tracks the camera to be at least (X) away studs from a part, with an optional rotationOffset (CFrame) defined that rotates the cframe relative to the tracked part The camera is positioned always at least (followDistance) studs away from the targetPart, and at a height of (followHeight) studs above the targetPart. The function will continue to track the part until targetPart is destroyed or the function/another camera tracking function is called again with a new targetPart. "},{"title":"TweenToPosition","type":1,"pageTitle":"CameraController","url":"/roblox-sparkles-docs/api/CameraController#TweenToPosition","content":"</> CameraController:TweenToPosition( Target: CFrame ,-- The target CFrame to tween the camera to yieldUntilReached: boolean?-- If true, the function will yield until the camera has reached the target position/orientation ) → () This function tweens the camera (Using springs) to a specific CFrame "},{"title":"CircleCenterMap","type":1,"pageTitle":"CameraController","url":"/roblox-sparkles-docs/api/CameraController#CircleCenterMap","content":"</> CameraController:CircleCenterMap( snapCamera: boolean?-- If true, the camera will snap to the starting CFrame position, otherwise it will tween from the current camera CFrame to the new desired position ) → () This function rotates the camera around CENTER_OF_MAP position by (cameraDistance) studs away from the center, with a (cameraHeight) offset from the CENTER_OF_MAP variable "},{"title":"StopCameraMovement","type":1,"pageTitle":"CameraController","url":"/roblox-sparkles-docs/api/CameraController#StopCameraMovement","content":"</> CameraController:StopCameraMovement() → nil This function disables the renderstep connection (If connected) for camera movement "},{"title":"KnitInit","type":1,"pageTitle":"CameraController","url":"/roblox-sparkles-docs/api/CameraController#KnitInit","content":"</> CameraController:KnitInit() → () Initialize CameraController "},{"title":"KnitStart","type":1,"pageTitle":"CameraController","url":"/roblox-sparkles-docs/api/CameraController#KnitStart","content":"</> CameraController:KnitStart() → () Start CameraController "},{"title":"FurnitureBaseClass","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/FurnitureBaseClass","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"FurnitureBaseClass","url":"/roblox-sparkles-docs/api/FurnitureBaseClass#properties","content":" "},{"title":"MODEL_PIVOT_TWEEN_INFO","type":1,"pageTitle":"FurnitureBaseClass","url":"/roblox-sparkles-docs/api/FurnitureBaseClass#MODEL_PIVOT_TWEEN_INFO","content":"</> FurnitureBaseClass.MODEL_PIVOT_TWEEN_INFO: TweenInfo The tween info for the model's pivot/growth animation (Default if a prop does not have a custom animation defined) "},{"title":"Functions","type":1,"pageTitle":"FurnitureBaseClass","url":"/roblox-sparkles-docs/api/FurnitureBaseClass#functions","content":" "},{"title":"PivotTo","type":1,"pageTitle":"FurnitureBaseClass","url":"/roblox-sparkles-docs/api/FurnitureBaseClass#PivotTo","content":"</> FurnitureBaseClass.PivotTo( self: table,-- Self class targetCFrame: CFrame ,-- The new CFrame for the model/hitbox isOwner: boolean,-- Indicates whether the owner of this prop is the local player initialPlacement: boolean?-- Indicates whether this is the prop being placed down for the first time or is being moved ) → boolean-- Returns true if the prop's position is successfully adjusted, and false if not Moves the furniture model to a new location If the respective furniture class has a custom PivotTo function, that will be used instead of this pivot to function If called from the client, the 3D model will pivot to the new location If called from the server, the hitbox will pivot to the new location "},{"title":"new","type":1,"pageTitle":"FurnitureBaseClass","url":"/roblox-sparkles-docs/api/FurnitureBaseClass#new","content":"</> FurnitureBaseClass.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"ToggleEnchantment","type":1,"pageTitle":"FurnitureBaseClass","url":"/roblox-sparkles-docs/api/FurnitureBaseClass#ToggleEnchantment","content":"</> FurnitureBaseClass:ToggleEnchantment( enchantmentKey: string,-- The enchantment to enable/disable doEnable: boolean-- Should the enchantment be enabled? ) → boolean | string-- Returns a boolean if the enchantment is successfully set, and a string (Error) if not Toggles a specific enchantment's behavior "},{"title":"GetEnabledEnchantments","type":1,"pageTitle":"FurnitureBaseClass","url":"/roblox-sparkles-docs/api/FurnitureBaseClass#GetEnabledEnchantments","content":"</> FurnitureBaseClass:GetEnabledEnchantments() → table-- Returns an array (strings) of equipped enchantments Get an array of enchantments that are presently equipped to this prop "},{"title":"PlayAnimation","type":1,"pageTitle":"FurnitureBaseClass","url":"/roblox-sparkles-docs/api/FurnitureBaseClass#PlayAnimation","content":"This item only works when running on the client. Client </> FurnitureBaseClass:PlayAnimation( Animation: string?-- The name of the animation to play - if nil, current animation will be stopped ) → boolean Plays an animation on the prop "},{"title":"Initiate","type":1,"pageTitle":"FurnitureBaseClass","url":"/roblox-sparkles-docs/api/FurnitureBaseClass#Initiate","content":"</> FurnitureBaseClass:Initiate( ...: any-- TBD optional parameters ) → Model | BasePart -- Returns the furniture model if the code is being run client-side, and returns the bounding box BasePart if run server-side Initiates furniture behavior "},{"title":"Destroy","type":1,"pageTitle":"FurnitureBaseClass","url":"/roblox-sparkles-docs/api/FurnitureBaseClass#Destroy","content":"</> FurnitureBaseClass:Destroy() → () Destroys the furniture class "},{"title":"SetReplicaData","type":1,"pageTitle":"FurnitureBaseClass","url":"/roblox-sparkles-docs/api/FurnitureBaseClass#SetReplicaData","content":"</> FurnitureBaseClass:SetReplicaData( existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → () Set replica data for this furniture object "},{"title":"NotificationService","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/NotificationService","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"NotificationService","url":"/roblox-sparkles-docs/api/NotificationService#functions","content":" "},{"title":"ShowError","type":1,"pageTitle":"NotificationService","url":"/roblox-sparkles-docs/api/NotificationService#ShowError","content":"</> NotificationService:ShowError( playerArray: table?,-- Array of player objects to send this notification to - if no array provided, all clients will be fired Message: string,-- The contents of the message to display to the player callbackBehavior: string?-- (Optional) A specific behavior to fire on the client relating to this notification (NOT ENABLED) ) → boolean-- Returns a boolean whether the message was successfully sent or not Shows an error message to player(s) "},{"title":"ShowWarning","type":1,"pageTitle":"NotificationService","url":"/roblox-sparkles-docs/api/NotificationService#ShowWarning","content":"</> NotificationService:ShowWarning( playerArray: table?,-- Array of player objects to send this notification to - if no array provided, all clients will be fired Message: string,-- The contents of the message to display to the player callbackBehavior: string?-- (Optional) A specific behavior to fire on the client relating to this notification (NOT ENABLED) ) → boolean-- Returns a boolean whether the message was successfully sent or not Shows a warning message to player(s) "},{"title":"ShowInformation","type":1,"pageTitle":"NotificationService","url":"/roblox-sparkles-docs/api/NotificationService#ShowInformation","content":"</> NotificationService:ShowInformation( playerArray: table?,-- Array of player objects to send this notification to - if no array provided, all clients will be fired Message: string,-- The contents of the message to display to the player callbackBehavior: string?-- (Optional) A specific behavior to fire on the client relating to this notification (NOT ENABLED) ) → boolean-- Returns a boolean whether the message was successfully sent or not Shows a notification message to player(s) "},{"title":"KnitInit","type":1,"pageTitle":"NotificationService","url":"/roblox-sparkles-docs/api/NotificationService#KnitInit","content":"</> NotificationService:KnitInit() → nil Initialize NotificationService "},{"title":"KnitStart","type":1,"pageTitle":"NotificationService","url":"/roblox-sparkles-docs/api/NotificationService#KnitStart","content":"</> NotificationService:KnitStart() → nil Start NotificationService "},{"title":"PlayerMovementService.Client","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/PlayerMovementService.Client","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"PlayerMovementService.Client","url":"/roblox-sparkles-docs/api/PlayerMovementService.Client#functions","content":" "},{"title":"ToggleFlightMode","type":1,"pageTitle":"PlayerMovementService.Client","url":"/roblox-sparkles-docs/api/PlayerMovementService.Client#ToggleFlightMode","content":"This item only works when running on the client. Client </> PlayerMovementService.Client:ToggleFlightMode( Player: Player ,-- The player to toggle flight mode for isEnabled: boolean-- Whether flight mode should be enabled or not ) → () Enables/disables flight mode for the player "},{"title":"AdjustFlightHeight","type":1,"pageTitle":"PlayerMovementService.Client","url":"/roblox-sparkles-docs/api/PlayerMovementService.Client#AdjustFlightHeight","content":"</> PlayerMovementService.Client:AdjustFlightHeight( Player: Player ,-- The player invoking this function cameraPitch: number-- The pitch of the player's camera CFrame ) → () Adjusts the desired flight height altitude for a player "},{"title":"Customer","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/Customer","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"Customer","url":"/roblox-sparkles-docs/api/Customer#functions","content":" "},{"title":"new","type":1,"pageTitle":"Customer","url":"/roblox-sparkles-docs/api/Customer#new","content":"</> Customer.new( Replication: table,-- An array of players to replicate this customer to - if no table is provided (nil), then the customer will replicate to all clients Origin: Vector3 ,-- The starting position of the customer NPC rigName: string?,-- The type of rig to use for the customer NPC (Optional - defaults to random appearance if no NPC provided) isVip: boolean-- Is the NPC a VIP? (If a VIP, a random item under the NPC's shopping list will pay a multiplier based on its selling price) ) → Promise<T>-- Returns a promise that resolves with the new customer table and rejects if it cannot Generates a new customer class "},{"title":"PlayAnimation","type":1,"pageTitle":"Customer","url":"/roblox-sparkles-docs/api/Customer#PlayAnimation","content":"</> Customer:PlayAnimation( Animation: string?-- The animation to play - if nil, the currently playing animation will be stopped ) → boolean-- Returns whether the animation was started successfully or not Replicates the state of an animation to the client and overrides any existing animations being played in that moment Animations are reset automatically when a new path is assigned "},{"title":"PlayEmotion","type":1,"pageTitle":"Customer","url":"/roblox-sparkles-docs/api/Customer#PlayEmotion","content":"This is a yielding function. When called, it will pause the Lua thread that called the function until a result is ready to be returned, without interrupting other scripts. Yields </> Customer:PlayEmotion( Emotion: string?-- The emotion to play - if no emotion is provided, the currently playing emotion is cancelled ) → () Plays an emotion to a customer NPC - function yields for as long as the emotion is playing "},{"title":"TakeFromStore","type":1,"pageTitle":"Customer","url":"/roblox-sparkles-docs/api/Customer#TakeFromStore","content":"</> Customer:TakeFromStore( floorId: string,-- replica ID of shop floor shelfId: string,-- replica ID of shelf itemId: string,-- name of item itemQuantity: number-- (Optional) amount of item to add - defaults to 1 ) → nil Add items to cart, and record the floor and shelf the items were taken from "},{"title":"ClearTakenFromList","type":1,"pageTitle":"Customer","url":"/roblox-sparkles-docs/api/Customer#ClearTakenFromList","content":"</> Customer:ClearTakenFromList() → nil Clear ItemsTaken and CurrentCart tables "},{"title":"ReturnItems","type":1,"pageTitle":"Customer","url":"/roblox-sparkles-docs/api/Customer#ReturnItems","content":"</> Customer:ReturnItems() → nil Returns any items in cart to player "},{"title":"HasItemsInCart","type":1,"pageTitle":"Customer","url":"/roblox-sparkles-docs/api/Customer#HasItemsInCart","content":"</> Customer:HasItemsInCart() → boolean Returns true if customer has a nonzero number of items in their cart, false otherwise "},{"title":"GetCurrentNPCPosition","type":1,"pageTitle":"Customer","url":"/roblox-sparkles-docs/api/Customer#GetCurrentNPCPosition","content":"</> Customer:GetCurrentNPCPosition() → CFrame? -- Returns the CFrame of the NPC if it is spawned in, and returns nil if not Gets the approx. server-side position of the NPC (Based on waypoints/elapsed time) "},{"title":"PodiumController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/PodiumController","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"PodiumController","url":"/roblox-sparkles-docs/api/PodiumController#properties","content":" "},{"title":"WAIT_TIME","type":1,"pageTitle":"PodiumController","url":"/roblox-sparkles-docs/api/PodiumController#WAIT_TIME","content":"</> PodiumController.WAIT_TIME: number Determines how frequently podiums are refreshed. "},{"title":"ROTATE_SPEED","type":1,"pageTitle":"PodiumController","url":"/roblox-sparkles-docs/api/PodiumController#ROTATE_SPEED","content":"</> PodiumController.ROTATE_SPEED: number The higher this number, the faster podium items will rotate when multipled by RunService delta time. "},{"title":"MODEL_SCALE_SIZE","type":1,"pageTitle":"PodiumController","url":"/roblox-sparkles-docs/api/PodiumController#MODEL_SCALE_SIZE","content":"</> PodiumController.MODEL_SCALE_SIZE: number The higher this number, the larger podium models will be. "},{"title":"Functions","type":1,"pageTitle":"PodiumController","url":"/roblox-sparkles-docs/api/PodiumController#functions","content":" "},{"title":"LockOutModel","type":1,"pageTitle":"PodiumController","url":"/roblox-sparkles-docs/api/PodiumController#LockOutModel","content":"This item only works when running on the client. Client </> PodiumController.LockOutModel( podiumModel: Instance -- The item's physical model to lock out. ) → nil This function automatically handles locking out cosmetic functionality. "},{"title":"CreatePodiumModel","type":1,"pageTitle":"PodiumController","url":"/roblox-sparkles-docs/api/PodiumController#CreatePodiumModel","content":"This item only works when running on the client. Client </> PodiumController.CreatePodiumModel( podiumModel: Instance ,-- The item's physical model to clone from. itemData: Table-- A table with item data formatted {item_name: string, item_data: ANY_TABLE} ) → nil This function automatically creates models for podiums, scales them up, and configures them. "},{"title":"KnitInit","type":1,"pageTitle":"PodiumController","url":"/roblox-sparkles-docs/api/PodiumController#KnitInit","content":"</> PodiumController:KnitInit() → nil Initialize PodiumController "},{"title":"KnitStart","type":1,"pageTitle":"PodiumController","url":"/roblox-sparkles-docs/api/PodiumController#KnitStart","content":"</> PodiumController:KnitStart() → nil Start PodiumController "},{"title":"PopupController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/PopupController","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"PopupController","url":"/roblox-sparkles-docs/api/PopupController#properties","content":" "},{"title":"POPUP_RESET_DELAY","type":1,"pageTitle":"PopupController","url":"/roblox-sparkles-docs/api/PopupController#POPUP_RESET_DELAY","content":"</> PopupController.POPUP_RESET_DELAY: number The delay (In seconds) after a player ceases to stop hovering over a pop-up icon before the pop-up is set to invisible "},{"title":"Functions","type":1,"pageTitle":"PopupController","url":"/roblox-sparkles-docs/api/PopupController#functions","content":" "},{"title":"SetLatestData","type":1,"pageTitle":"PopupController","url":"/roblox-sparkles-docs/api/PopupController#SetLatestData","content":"</> PopupController:SetLatestData( doReset: boolean,-- Should the frame be reset to default state? name: string,-- The name of the item. description: string?,-- The description of the item. secondDescription: string?,-- The secondary description of the item purchasePrice: number?,-- The price of the item icon: string?-- The icon of the item ) → nil This function should be used when you want the popup to display something. "},{"title":"GetGUI","type":1,"pageTitle":"PopupController","url":"/roblox-sparkles-docs/api/PopupController#GetGUI","content":"This item only works when running on the client. Client </> PopupController:GetGUI() → ScreenGui Returns the reference for the popup GUI. "},{"title":"KnitInit","type":1,"pageTitle":"PopupController","url":"/roblox-sparkles-docs/api/PopupController#KnitInit","content":"</> PopupController:KnitInit() → nil Initialize PopupController "},{"title":"KnitStart","type":1,"pageTitle":"PopupController","url":"/roblox-sparkles-docs/api/PopupController#KnitStart","content":"</> PopupController:KnitStart() → nil Start PopupController "},{"title":"PlayerdataService","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/PlayerdataService","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"PlayerdataService","url":"/roblox-sparkles-docs/api/PlayerdataService#properties","content":" "},{"title":"VERSION","type":1,"pageTitle":"PlayerdataService","url":"/roblox-sparkles-docs/api/PlayerdataService#VERSION","content":"</> PlayerdataService.VERSION: number A number that defines the data version for better QoL (easy resetting). "},{"title":"STORE_NAME","type":1,"pageTitle":"PlayerdataService","url":"/roblox-sparkles-docs/api/PlayerdataService#STORE_NAME","content":"</> PlayerdataService.STORE_NAME: string The datastore to use with profileservice for storing playerdata "},{"title":"DATA_PREFIX","type":1,"pageTitle":"PlayerdataService","url":"/roblox-sparkles-docs/api/PlayerdataService#DATA_PREFIX","content":"</> PlayerdataService.DATA_PREFIX: string The prefix to amend to the key used for saving playerdata (Eg. "Playerdata_123") "},{"title":"DATA_LOAD_RETRIES","type":1,"pageTitle":"PlayerdataService","url":"/roblox-sparkles-docs/api/PlayerdataService#DATA_LOAD_RETRIES","content":"</> PlayerdataService.DATA_LOAD_RETRIES: number The maximum amount of times to try to load a player's data (On joining the game) before rejecting the promise associated w/it "},{"title":"DATA_LOAD_RETRY_DELAY","type":1,"pageTitle":"PlayerdataService","url":"/roblox-sparkles-docs/api/PlayerdataService#DATA_LOAD_RETRY_DELAY","content":"</> PlayerdataService.DATA_LOAD_RETRY_DELAY: number How long to wait between failed attempts with loading a player's data (On joining the game) before retrying "},{"title":"LOAD_PLAYERDATA_IN_STUDIO","type":1,"pageTitle":"PlayerdataService","url":"/roblox-sparkles-docs/api/PlayerdataService#LOAD_PLAYERDATA_IN_STUDIO","content":"</> PlayerdataService.LOAD_PLAYERDATA_IN_STUDIO: boolean Boolean that determines whether player save profiles should be loaded while in a Roblox studio session If true, playerdata will load in studio. If false, playerdata will not be loaded in studio "},{"title":"CHAT_COMMANDS","type":1,"pageTitle":"PlayerdataService","url":"/roblox-sparkles-docs/api/PlayerdataService#CHAT_COMMANDS","content":"</> PlayerdataService.CHAT_COMMANDS: table A key/pair array of chat commands that are available in-game to respective ranked members in the sparkles group "},{"title":"Functions","type":1,"pageTitle":"PlayerdataService","url":"/roblox-sparkles-docs/api/PlayerdataService#functions","content":" "},{"title":"GetPlayerdata","type":1,"pageTitle":"PlayerdataService","url":"/roblox-sparkles-docs/api/PlayerdataService#GetPlayerdata","content":"This item only works when running on the client. Client </> PlayerdataService:GetPlayerdata(Player: Player ) → Promise<T>-- A promise that resolves with a table of the player's data if the playerdata exists, and rejects if the playerdata does not exist Returns a promise that resolves with a table of the player's data, and rejects if it cannot be retrieved for some reason If the playerdata is not loaded already, :_createPlayerdataProfile(Player: Player) will be called server-side first "},{"title":"GetPlayerdata","type":1,"pageTitle":"PlayerdataService","url":"/roblox-sparkles-docs/api/PlayerdataService#GetPlayerdata","content":"This item only works when running on the server. Server </> PlayerdataService:GetPlayerdata(Player: Player ) → Promise<T>-- A promise that resolves with a table of the player's data if the playerdata exists, and rejects if the playerdata does not exist Returns a promise that resolves with a table of the player's data, and rejects if it cannot be retrieved for some reason If the playerdata is not loaded already, :_createPlayerdataProfile(Player: Player) will be called first "},{"title":"KnitInit","type":1,"pageTitle":"PlayerdataService","url":"/roblox-sparkles-docs/api/PlayerdataService#KnitInit","content":"This item only works when running on the server. Server </> PlayerdataService:KnitInit() → nil Initialize PlayerdataService "},{"title":"KnitStart","type":1,"pageTitle":"PlayerdataService","url":"/roblox-sparkles-docs/api/PlayerdataService#KnitStart","content":"This item only works when running on the server. Server </> PlayerdataService:KnitStart() → nil Start PlayerdataService "},{"title":"NPC","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/NPC","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"NPC","url":"/roblox-sparkles-docs/api/NPC#properties","content":" "},{"title":"WING_DAMPING_RATIO","type":1,"pageTitle":"NPC","url":"/roblox-sparkles-docs/api/NPC#WING_DAMPING_RATIO","content":"</> NPC.WING_DAMPING_RATIO: number Damping ratio for wing flap spring "},{"title":"WING_FREQUENCY","type":1,"pageTitle":"NPC","url":"/roblox-sparkles-docs/api/NPC#WING_FREQUENCY","content":"</> NPC.WING_FREQUENCY: number Frequency for wing flap spring "},{"title":"WING_FLAP_CYCLE_TIME","type":1,"pageTitle":"NPC","url":"/roblox-sparkles-docs/api/NPC#WING_FLAP_CYCLE_TIME","content":"</> NPC.WING_FLAP_CYCLE_TIME: number How long it takes (Baseline idle cycle) for the NPC wings to either open or close "},{"title":"WING_IDLE_SPEED_MULTIPLIER","type":1,"pageTitle":"NPC","url":"/roblox-sparkles-docs/api/NPC#WING_IDLE_SPEED_MULTIPLIER","content":"</> NPC.WING_IDLE_SPEED_MULTIPLIER: number How much the flap speed should be adjusted (Number >= 1 = increase in flap speed, number <= 1 = decrease in flap speed) when the NPC is not moving "},{"title":"WING_MOVING_SPEED_MULTIPLIER","type":1,"pageTitle":"NPC","url":"/roblox-sparkles-docs/api/NPC#WING_MOVING_SPEED_MULTIPLIER","content":"</> NPC.WING_MOVING_SPEED_MULTIPLIER: number How much the flap speed should be adjusted (Number >= 1 = increase in flap speed, number <= 1 = decrease in flap speed) when the NPC is moving "},{"title":"DISABLED_HUMANOID_STATES","type":1,"pageTitle":"NPC","url":"/roblox-sparkles-docs/api/NPC#DISABLED_HUMANOID_STATES","content":"</> NPC.DISABLED_HUMANOID_STATES: table Key/pair table (Eg. {FallingDown=true}) of humanoid states that should be disabled by default (To help performance) "},{"title":"PATHFINDING_MAX_ATTEMPTS","type":1,"pageTitle":"NPC","url":"/roblox-sparkles-docs/api/NPC#PATHFINDING_MAX_ATTEMPTS","content":"</> NPC.PATHFINDING_MAX_ATTEMPTS: number How many times the NPC class (server) will attempt to compute a path before rejecting the promise created by NPC.AssignWorldPath "},{"title":"PATHFINDING_REATTEMPT_DELAY","type":1,"pageTitle":"NPC","url":"/roblox-sparkles-docs/api/NPC#PATHFINDING_REATTEMPT_DELAY","content":"</> NPC.PATHFINDING_REATTEMPT_DELAY: number How long to wait before re-attempting to build a path after the last path build attempt failed "},{"title":"NPC_PATH_COSTS","type":1,"pageTitle":"NPC","url":"/roblox-sparkles-docs/api/NPC#NPC_PATH_COSTS","content":"</> NPC.NPC_PATH_COSTS: table Key/pair table (Eg. {StoreFurniture=math.huge}) of pathfinding costs for all NPCs See here for more info: https://create.roblox.com/docs/characters/pathfinding#working-with-regions "},{"title":"Functions","type":1,"pageTitle":"NPC","url":"/roblox-sparkles-docs/api/NPC#functions","content":" "},{"title":"new","type":1,"pageTitle":"NPC","url":"/roblox-sparkles-docs/api/NPC#new","content":"This item only works when running on the client. Client </> NPC.new( appearanceData: table,-- The appearance data for the NPC Replica: [Replica]?-- The replica class of the NPC ) → Promise<T>-- Returns a promise that resolves with the NPC class if successfully generated, and rejects if not Create a new NPC class "},{"title":"new","type":1,"pageTitle":"NPC","url":"/roblox-sparkles-docs/api/NPC#new","content":"This item only works when running on the server. Server </> NPC.new( Replica: [Replica]-- The replica class to use for the NPC ) → Promise<T>-- Returns a promise that resolves with the NPC class if successfully generated, and rejects if not Create a new NPC class "},{"title":"_visualizeShoppingList","type":1,"pageTitle":"NPC","url":"/roblox-sparkles-docs/api/NPC#_visualizeShoppingList","content":"</> NPC:_visualizeShoppingList() → nil Updates the shopping list billboard GUI under the NPC "},{"title":"_getNPCPosition","type":1,"pageTitle":"NPC","url":"/roblox-sparkles-docs/api/NPC#_getNPCPosition","content":"</> NPC:_getNPCPosition() → CFrame -- Returns the CFrame of where the NPC should be (Based on elapsed time) Returns the approx. position of the NPC based on the current path + time along the path "},{"title":"PlayEmotion","type":1,"pageTitle":"NPC","url":"/roblox-sparkles-docs/api/NPC#PlayEmotion","content":"This item only works when running on the client. Client </> NPC:PlayEmotion( Emotion: string?-- The emotion to play ) → () Plays back an emotion from the NPC "},{"title":"AssignWorldPath","type":1,"pageTitle":"NPC","url":"/roblox-sparkles-docs/api/NPC#AssignWorldPath","content":"</> NPC:AssignWorldPath( targetPoint: Vector3 -- The target point the NPC should navigate to ) → Promise<T>-- Returns a promise that resolves with the new path, and rejects if a path cannot be calculated Generates a new path for an NPC and assigns the path to the NPC "},{"title":"PlayAnimation","type":1,"pageTitle":"NPC","url":"/roblox-sparkles-docs/api/NPC#PlayAnimation","content":"</> NPC:PlayAnimation( Animation: string-- The animation to play ) → boolean-- Returns whether the animation was started successfully or not Replicates the state of an animation to the client and overrides any existing animations being played in that moment Animations are reset automatically when a new path is assigned "},{"title":"PlayEmotion","type":1,"pageTitle":"NPC","url":"/roblox-sparkles-docs/api/NPC#PlayEmotion","content":"This is a yielding function. When called, it will pause the Lua thread that called the function until a result is ready to be returned, without interrupting other scripts. Yields </> NPC:PlayEmotion( Emotion: string-- The emotion to play ) → () Plays an emotion for an NPC "},{"title":"Replica","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/Replica","content":"On this page Replica Replica class (Client)","keywords":""},{"title":"PlacementService.Client","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/PlacementService.Client","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"PlacementService.Client","url":"/roblox-sparkles-docs/api/PlacementService.Client#functions","content":" "},{"title":"MoveModel","type":1,"pageTitle":"PlacementService.Client","url":"/roblox-sparkles-docs/api/PlacementService.Client#MoveModel","content":"This item only works when running on the client. Client </> PlacementService.Client:MoveModel( player: Player , args: table ) → boolean Client access to MoveModel "},{"title":"ToggleStoreOpen","type":1,"pageTitle":"PlacementService.Client","url":"/roblox-sparkles-docs/api/PlacementService.Client#ToggleStoreOpen","content":"This item only works when running on the client. Client </> PlacementService.Client:ToggleStoreOpen( Player: Player ,-- The player invoking the remote function Open: boolean-- Whether the player's store is marked as open or not (Customers can/cannot enter) ) → () Client access to PlacementService.ToggleStoreOpen function "},{"title":"ChangeBuildingDesign","type":1,"pageTitle":"PlacementService.Client","url":"/roblox-sparkles-docs/api/PlacementService.Client#ChangeBuildingDesign","content":"This item only works when running on the client. Client </> PlacementService.Client:ChangeBuildingDesign( Player: Player ,-- The player invoking the remote newBuildingDesign: string?-- The chosen building design - if nil, building will default to default design for that store plot ) → Promise<T>-- Returns a promise that returns a boolean indicating whether the new building design was set or not Client access to ChangeBuildingDesign "},{"title":"ProcessPropInput","type":1,"pageTitle":"PlacementService.Client","url":"/roblox-sparkles-docs/api/PlacementService.Client#ProcessPropInput","content":"</> PlacementService.Client:ProcessPropInput( Player: Player ,-- The player firing the remote floorId: string,-- The ID of the floor the player is trying to edit propId: string,-- The ID of the prop the player is trying to edit propFunction: string,-- The function to fire under the prop ...: any-- Variadic args passed along to the prop's _processInput function ) → any-- Returns the callback from the respective propFunction function under the prop class Accepts incoming behavior from prop modules and passes along the args to the relevant prop class (If it exists) "},{"title":"UnequipWand","type":1,"pageTitle":"PlacementService.Client","url":"/roblox-sparkles-docs/api/PlacementService.Client#UnequipWand","content":"This item only works when running on the client. Client </> PlacementService.Client:UnequipWand(player: Player ) → () Client access to UnequipWand "},{"title":"EquipWand","type":1,"pageTitle":"PlacementService.Client","url":"/roblox-sparkles-docs/api/PlacementService.Client#EquipWand","content":"This item only works when running on the client. Client </> PlacementService.Client:EquipWand(player: Player ) → () Client access to EquipWand "},{"title":"EnchantProp","type":1,"pageTitle":"PlacementService.Client","url":"/roblox-sparkles-docs/api/PlacementService.Client#EnchantProp","content":"This item only works when running on the client. Client </> PlacementService.Client:EnchantProp(...: any) → Promise<T> Client access to EnchantProp "},{"title":"StockShelf","type":1,"pageTitle":"PlacementService.Client","url":"/roblox-sparkles-docs/api/PlacementService.Client#StockShelf","content":"</> PlacementService.Client:StockShelf(...: any) → Promise<T>-- Returns a promise that resolves with the new stock configuration for the shelf if successfully stocked, and rejects if it cannot be stocked Stocks an item for a shelf (Client-exposed function for PlacementService.StockShelf) "},{"title":"PlaceModel","type":1,"pageTitle":"PlacementService.Client","url":"/roblox-sparkles-docs/api/PlacementService.Client#PlaceModel","content":"</> PlacementService.Client:PlaceModel( player: Player , args: table-- table of arguments ) → boolean-- true if successfully placed, false otherwise Client access to PlaceModel "},{"title":"RemoveModel","type":1,"pageTitle":"PlacementService.Client","url":"/roblox-sparkles-docs/api/PlacementService.Client#RemoveModel","content":"</> PlacementService.Client:RemoveModel( Player: Player , args: table ) → () Client access to RemoveModel "},{"title":"PurplePotPlant","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/PurplePotPlant","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"PurplePotPlant","url":"/roblox-sparkles-docs/api/PurplePotPlant#functions","content":" "},{"title":"new","type":1,"pageTitle":"PurplePotPlant","url":"/roblox-sparkles-docs/api/PurplePotPlant#new","content":"</> PurplePotPlant.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"PlayerService","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/PlayerService","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"PlayerService","url":"/roblox-sparkles-docs/api/PlayerService#properties","content":" "},{"title":"CHARACTER_LOAD_TIMEOUT","type":1,"pageTitle":"PlayerService","url":"/roblox-sparkles-docs/api/PlayerService#CHARACTER_LOAD_TIMEOUT","content":"</> PlayerService.CHARACTER_LOAD_TIMEOUT: number How long to wait for a character to load (In seconds) before firing the failsafe character added function (If applicable) "},{"title":"SPARKLES_GROUP_ID","type":1,"pageTitle":"PlayerService","url":"/roblox-sparkles-docs/api/PlayerService#SPARKLES_GROUP_ID","content":"</> PlayerService.SPARKLES_GROUP_ID: number The group ID of the official sparkles group "},{"title":"Functions","type":1,"pageTitle":"PlayerService","url":"/roblox-sparkles-docs/api/PlayerService#functions","content":" "},{"title":"_characterAdded","type":1,"pageTitle":"PlayerService","url":"/roblox-sparkles-docs/api/PlayerService#_characterAdded","content":"</> PlayerService:_characterAdded( Player: Player ,-- The player whose character was added ownerSpawnCFrame: CFrame -- Temporary variable used for teleporting the player to their starting land plot when respawning ) → () Function that is run when a player's character is added "},{"title":"KnitInit","type":1,"pageTitle":"PlayerService","url":"/roblox-sparkles-docs/api/PlayerService#KnitInit","content":"</> PlayerService:KnitInit() → nil Initialize PlayerService "},{"title":"KnitStart","type":1,"pageTitle":"PlayerService","url":"/roblox-sparkles-docs/api/PlayerService#KnitStart","content":"</> PlayerService:KnitStart() → nil Start PlayerService "},{"title":"PlayerMovementService","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/PlayerMovementService","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"PlayerMovementService","url":"/roblox-sparkles-docs/api/PlayerMovementService#properties","content":" "},{"title":"MAX_ROLL","type":1,"pageTitle":"PlayerMovementService","url":"/roblox-sparkles-docs/api/PlayerMovementService#MAX_ROLL","content":"</> PlayerMovementService.MAX_ROLL: number The max roll (In radians) for the player's flight movement to roll side-to-side based on their movement "},{"title":"BASE_PITCH","type":1,"pageTitle":"PlayerMovementService","url":"/roblox-sparkles-docs/api/PlayerMovementService#BASE_PITCH","content":"</> PlayerMovementService.BASE_PITCH: number The minimum pitch (In negative radians) of the character when in flight mode "},{"title":"MAX_PITCH","type":1,"pageTitle":"PlayerMovementService","url":"/roblox-sparkles-docs/api/PlayerMovementService#MAX_PITCH","content":"</> PlayerMovementService.MAX_PITCH: number The max pitch (In negative radians) of the character when in flight mode "},{"title":"VERTICAL_BOB_OFFSET","type":1,"pageTitle":"PlayerMovementService","url":"/roblox-sparkles-docs/api/PlayerMovementService#VERTICAL_BOB_OFFSET","content":"</> PlayerMovementService.VERTICAL_BOB_OFFSET: number The max height adjustment on the Y axis (Divided by 2 for each direction) for how far a player should float beyond their current position "},{"title":"BASE_FLIGHT_HEIGHT","type":1,"pageTitle":"PlayerMovementService","url":"/roblox-sparkles-docs/api/PlayerMovementService#BASE_FLIGHT_HEIGHT","content":"</> PlayerMovementService.BASE_FLIGHT_HEIGHT: number How far above the ground (In studs) the player should be at the minimum "},{"title":"FLIGHT_SPEED_MULTIPLIER","type":1,"pageTitle":"PlayerMovementService","url":"/roblox-sparkles-docs/api/PlayerMovementService#FLIGHT_SPEED_MULTIPLIER","content":"</> PlayerMovementService.FLIGHT_SPEED_MULTIPLIER: number The maximum flight speed multiplied relative to StarterPlayer.CharacterWalkSpeed "},{"title":"VERTICAL_FLIGHT_SPEED_MULTIPLIER","type":1,"pageTitle":"PlayerMovementService","url":"/roblox-sparkles-docs/api/PlayerMovementService#VERTICAL_FLIGHT_SPEED_MULTIPLIER","content":"</> PlayerMovementService.VERTICAL_FLIGHT_SPEED_MULTIPLIER: number The maximum vertical flight speed multiplied relative to StarterPlayer.CharacterWalkSpeed "},{"title":"VERTICAL_FLIGHT_DEADZONE_CAMERA_ANGLE","type":1,"pageTitle":"PlayerMovementService","url":"/roblox-sparkles-docs/api/PlayerMovementService#VERTICAL_FLIGHT_DEADZONE_CAMERA_ANGLE","content":"</> PlayerMovementService.VERTICAL_FLIGHT_DEADZONE_CAMERA_ANGLE: number The minimum angle (+/-) (In degrees, converted to radians) needed to adjust the desired altitude "},{"title":"VERTICAL_FLIGHT_MAX_CAMERA_ANGLE","type":1,"pageTitle":"PlayerMovementService","url":"/roblox-sparkles-docs/api/PlayerMovementService#VERTICAL_FLIGHT_MAX_CAMERA_ANGLE","content":"</> PlayerMovementService.VERTICAL_FLIGHT_MAX_CAMERA_ANGLE: number The maximum angle (+/-) (In degrees, converted to radians) for adjusting the camera's angle "},{"title":"MINIMUM_FLIGHT_ALTITUDE","type":1,"pageTitle":"PlayerMovementService","url":"/roblox-sparkles-docs/api/PlayerMovementService#MINIMUM_FLIGHT_ALTITUDE","content":"</> PlayerMovementService.MINIMUM_FLIGHT_ALTITUDE: number The floor (Y axis) for when a player out-of-bounds should have their height variable overridden and set to this number instead "},{"title":"MAX_FLIGHT_RADIUS","type":1,"pageTitle":"PlayerMovementService","url":"/roblox-sparkles-docs/api/PlayerMovementService#MAX_FLIGHT_RADIUS","content":"</> PlayerMovementService.MAX_FLIGHT_RADIUS: number How far away from the center of the map the player can be before being gently nudged back into the map bounds - has a feather zone of 10 studs (Eg. Range is 200 studs, it will nudge them back to 190 studs away from the center) "},{"title":"FLIGHT_RADIUS_BUFFER","type":1,"pageTitle":"PlayerMovementService","url":"/roblox-sparkles-docs/api/PlayerMovementService#FLIGHT_RADIUS_BUFFER","content":"</> PlayerMovementService.FLIGHT_RADIUS_BUFFER: number The buffer (Maxflightradius-FLIGHT_RADIUS_BUFFER) for nudging players back into the map - eg. They can go 240 studs away from the center, but when they get nudged back, they return to 200 studs away from the center "},{"title":"MAP_CENTER","type":1,"pageTitle":"PlayerMovementService","url":"/roblox-sparkles-docs/api/PlayerMovementService#MAP_CENTER","content":"</> PlayerMovementService.MAP_CENTER: Vector3 Center of the map "},{"title":"Functions","type":1,"pageTitle":"PlayerMovementService","url":"/roblox-sparkles-docs/api/PlayerMovementService#functions","content":" "},{"title":"ToggleFlightMode","type":1,"pageTitle":"PlayerMovementService","url":"/roblox-sparkles-docs/api/PlayerMovementService#ToggleFlightMode","content":"This item only works when running on the server. Server </> PlayerMovementService:ToggleFlightMode( Player: Player ,-- The player to toggle flight mode for isEnabled: boolean-- Whether flight mode should be enabled or not ) → () Enables/disables flight mode for a player "},{"title":"KnitInit","type":1,"pageTitle":"PlayerMovementService","url":"/roblox-sparkles-docs/api/PlayerMovementService#KnitInit","content":"</> PlayerMovementService:KnitInit() → () Initialize PlayerMovementService "},{"title":"KnitStart","type":1,"pageTitle":"PlayerMovementService","url":"/roblox-sparkles-docs/api/PlayerMovementService#KnitStart","content":"</> PlayerMovementService:KnitStart() → () Start PlayerMovementService "},{"title":"ReplicaController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/ReplicaController","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"ReplicaController","url":"/roblox-sparkles-docs/api/ReplicaController#functions","content":" "},{"title":"replicaOfClassCreated","type":1,"pageTitle":"ReplicaController","url":"/roblox-sparkles-docs/api/ReplicaController#replicaOfClassCreated","content":"</> ReplicaController:replicaOfClassCreated( class: string,-- The class of replica that you want to connect to (Eg. "Playerdata") callback: function-- A function that will be called when a new Replica object of the same class parameter is created - only argument provided is the newly created Replica object ) → function-- Returns a function that (When called) disconnects the created script connection When a new Replica object of the 'class' parameter is added, the 'callback' function is called (The provided argument is the new Replica object) "},{"title":"KnitInit","type":1,"pageTitle":"ReplicaController","url":"/roblox-sparkles-docs/api/ReplicaController#KnitInit","content":"</> ReplicaController:KnitInit() → () Initialize ReplicaController "},{"title":"KnitStart","type":1,"pageTitle":"ReplicaController","url":"/roblox-sparkles-docs/api/ReplicaController#KnitStart","content":"</> ReplicaController:KnitStart() → () Start ReplicaController "},{"title":"PropController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/PropController","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"PropController","url":"/roblox-sparkles-docs/api/PropController#functions","content":" "},{"title":"KnitInit","type":1,"pageTitle":"PropController","url":"/roblox-sparkles-docs/api/PropController#KnitInit","content":"</> PropController:KnitInit() → nil Initiate PropController "},{"title":"KnitStart","type":1,"pageTitle":"PropController","url":"/roblox-sparkles-docs/api/PropController#KnitStart","content":"</> PropController:KnitStart() → nil Start PropController "},{"title":"PlacementController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/PlacementController","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"PlacementController","url":"/roblox-sparkles-docs/api/PlacementController#properties","content":" "},{"title":"GRID_UNIT","type":1,"pageTitle":"PlacementController","url":"/roblox-sparkles-docs/api/PlacementController#GRID_UNIT","content":"</> PlacementController.GRID_UNIT: number Grid unit for snapping prop placement "},{"title":"STORE_INDICATOR_HIDE_DISTANCE","type":1,"pageTitle":"PlacementController","url":"/roblox-sparkles-docs/api/PlacementController#STORE_INDICATOR_HIDE_DISTANCE","content":"</> PlacementController.STORE_INDICATOR_HIDE_DISTANCE: number The distance from the entrance of the store at which point the store indicator UI above the store should be hidden "},{"title":"FURNITURE_TAG","type":1,"pageTitle":"PlacementController","url":"/roblox-sparkles-docs/api/PlacementController#FURNITURE_TAG","content":"</> PlacementController.FURNITURE_TAG: string String pattern used for identifying hitboxes assigned to a specific shop owner "},{"title":"PROP_PREVIEW_COLOR_PLACEABLE","type":1,"pageTitle":"PlacementController","url":"/roblox-sparkles-docs/api/PlacementController#PROP_PREVIEW_COLOR_PLACEABLE","content":"</> PlacementController.PROP_PREVIEW_COLOR_PLACEABLE: Color3 The color3 that parts under the preview model should be recolored to when the prop is in a placeable location "},{"title":"PROP_PREVIEW_COLOR_UNPLACEABLE","type":1,"pageTitle":"PlacementController","url":"/roblox-sparkles-docs/api/PlacementController#PROP_PREVIEW_COLOR_UNPLACEABLE","content":"</> PlacementController.PROP_PREVIEW_COLOR_UNPLACEABLE: Color3 The color3 that parts under the preview model should be recolored to when the prop is NOT in a placeable location "},{"title":"PROP_PREVIEW_COLOR_TWEEN_INFO","type":1,"pageTitle":"PlacementController","url":"/roblox-sparkles-docs/api/PlacementController#PROP_PREVIEW_COLOR_TWEEN_INFO","content":"</> PlacementController.PROP_PREVIEW_COLOR_TWEEN_INFO: TweenInfo The tween info used for tweening between placeable/unplaceable state indicators w/3D prop previews "},{"title":"Functions","type":1,"pageTitle":"PlacementController","url":"/roblox-sparkles-docs/api/PlacementController#functions","content":" "},{"title":"PlayAnimation","type":1,"pageTitle":"PlacementController","url":"/roblox-sparkles-docs/api/PlacementController#PlayAnimation","content":"</> PlacementController:PlayAnimation( name: string-- name of animation to play ) → AnimationTrack -- animation track if successfully played, nil otherwise Temporary function to play an animation of given name from the ReplicatedStorage folder "},{"title":"SetupPreviewModel","type":1,"pageTitle":"PlacementController","url":"/roblox-sparkles-docs/api/PlacementController#SetupPreviewModel","content":"</> PlacementController:SetupPreviewModel() → nil Sets up the preview model "},{"title":"UpdateBoundingBoxes","type":1,"pageTitle":"PlacementController","url":"/roblox-sparkles-docs/api/PlacementController#UpdateBoundingBoxes","content":"</> PlacementController:UpdateBoundingBoxes() → nil Update bounding boxes used for collision detection "},{"title":"StartPlacement","type":1,"pageTitle":"PlacementController","url":"/roblox-sparkles-docs/api/PlacementController#StartPlacement","content":"</> PlacementController:StartPlacement( modelName: string,-- name of the prop existingModel: Model? ,-- if in move mode, the model to move startPosition: Vector2 -- The position (Pixels) of the cursor on the screen ) → nil Start placing a prop "},{"title":"StopPlacement","type":1,"pageTitle":"PlacementController","url":"/roblox-sparkles-docs/api/PlacementController#StopPlacement","content":"</> PlacementController:StopPlacement() → nil Stop prop placement mode "},{"title":"StartDeleteMode","type":1,"pageTitle":"PlacementController","url":"/roblox-sparkles-docs/api/PlacementController#StartDeleteMode","content":"</> PlacementController:StartDeleteMode() → nil Start prop deletion mode "},{"title":"StopDeleteMode","type":1,"pageTitle":"PlacementController","url":"/roblox-sparkles-docs/api/PlacementController#StopDeleteMode","content":"</> PlacementController:StopDeleteMode() → nil Stop prop deletion mode "},{"title":"StartMoveMode","type":1,"pageTitle":"PlacementController","url":"/roblox-sparkles-docs/api/PlacementController#StartMoveMode","content":"</> PlacementController:StartMoveMode() → nil Start prop move mode "},{"title":"StopMoveMode","type":1,"pageTitle":"PlacementController","url":"/roblox-sparkles-docs/api/PlacementController#StopMoveMode","content":"</> PlacementController:StopMoveMode() → nil Stop prop move mode "},{"title":"_toggleStoreOwnerIndicator","type":1,"pageTitle":"PlacementController","url":"/roblox-sparkles-docs/api/PlacementController#_toggleStoreOwnerIndicator","content":"</> PlacementController:_toggleStoreOwnerIndicator( Enabled: boolean-- Whether the billboard GUI above the store should be visible or not ) → () Shows/hides the billboard UI over a player's store indicating they're the shop owner "},{"title":"KnitStart","type":1,"pageTitle":"PlacementController","url":"/roblox-sparkles-docs/api/PlacementController#KnitStart","content":"</> PlacementController:KnitStart() → nil Start PropController "},{"title":"SalonChair","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/SalonChair","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"SalonChair","url":"/roblox-sparkles-docs/api/SalonChair#functions","content":" "},{"title":"_activatedFunction","type":1,"pageTitle":"SalonChair","url":"/roblox-sparkles-docs/api/SalonChair#_activatedFunction","content":"</> SalonChair._activatedFunction( self: table,-- The furniture self class playerWhoTriggered: Player -- The player who triggered this prop activation function ) → () "},{"title":"new","type":1,"pageTitle":"SalonChair","url":"/roblox-sparkles-docs/api/SalonChair#new","content":"</> SalonChair.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"ReplicaUtil","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/ReplicaUtil","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"ReplicaUtil","url":"/roblox-sparkles-docs/api/ReplicaUtil#functions","content":" "},{"title":"getParent","type":1,"pageTitle":"ReplicaUtil","url":"/roblox-sparkles-docs/api/ReplicaUtil#getParent","content":"</> ReplicaUtil.getParent( path: string, data: {any} ) → ( {any}?, string? ) return table, string "},{"title":"ServerReplica","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/ServerReplica","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"ServerReplica","url":"/roblox-sparkles-docs/api/ServerReplica#functions","content":" "},{"title":"SetValue","type":1,"pageTitle":"ServerReplica","url":"/roblox-sparkles-docs/api/ServerReplica#SetValue","content":"</> ServerReplica:SetValue( path: stringThepathtoupdate., value: anyThevaluetoupdatethepathto. ) → Promise<T>-- Returns a promise that resolves if updated data should be sent to the client (An array of arguments to send via the ReplicaService.newReplica signal), and rejects if the key is the same/errors Sets value from path. "},{"title":"SetValues","type":1,"pageTitle":"ServerReplica","url":"/roblox-sparkles-docs/api/ServerReplica#SetValues","content":"</> ServerReplica:SetValues( path: stringThepathtoupdate., values: tableAdictionaryofvaluestoupdate. ) → Promise<T>-- Returns a promise that resolves if updated data should be sent to the client (An array of arguments to send via the ReplicaService.replicaListener signal), and rejects if the key is the same/errors Sets multiple values at once from the path "},{"title":"ArrayInsert","type":1,"pageTitle":"ServerReplica","url":"/roblox-sparkles-docs/api/ServerReplica#ArrayInsert","content":"</> ServerReplica:ArrayInsert( path: stringThepathofthearraytoupdate., value: anyThevaluetoinsertintothepatharray. ) → Promise<T>-- Returns a promise that resolves with the data that should be replicated to the client + the length of the new array (An array of arguments to send via the ReplicaService.replicaListener signal), and rejects if the pointer does not exist Inserts value into array found at the specified path. "},{"title":"ArraySet","type":1,"pageTitle":"ServerReplica","url":"/roblox-sparkles-docs/api/ServerReplica#ArraySet","content":"</> ServerReplica:ArraySet( path: stringThepathofthearraytoupdate, index: numberTheindextoupdateinthespecifiedtable, value: anyThevaluetosettheindexto ) → Promise<T>-- Returns a promise that resolves with the data that should be replicated to the client + the index (An array of arguments to send via the ReplicaService.replicaListener signal), and rejects if the pointer does not exist, the index is not already set, or if the index value is equal to the new value Sets index of array found at the specified path "},{"title":"ArrayRemove","type":1,"pageTitle":"ServerReplica","url":"/roblox-sparkles-docs/api/ServerReplica#ArrayRemove","content":"</> ServerReplica:ArrayRemove( path: stringThepathofthearraytoupdate., index: numberTheindextoremovefromthearray. ) → Promise<T>-- Returns a promise that resolves with the data that should be replicated to the client + the removed value (An array of arguments to send via the ReplicaService.replicaListener signal), and rejects if the pointer does not exist, the index is not already set, or if the index value is equal to the new value Removes index from array found at the specified path. "},{"title":"PreloadController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/PreloadController","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"PreloadController","url":"/roblox-sparkles-docs/api/PreloadController#properties","content":" "},{"title":"ASSET_LOAD_TIMEOUT","type":1,"pageTitle":"PreloadController","url":"/roblox-sparkles-docs/api/PreloadController#ASSET_LOAD_TIMEOUT","content":"</> PreloadController.ASSET_LOAD_TIMEOUT: number The amount of time to wait for assets to load before timing out "},{"title":"Functions","type":1,"pageTitle":"PreloadController","url":"/roblox-sparkles-docs/api/PreloadController#functions","content":" "},{"title":"PreloadAssets","type":1,"pageTitle":"PreloadController","url":"/roblox-sparkles-docs/api/PreloadController#PreloadAssets","content":"This is a yielding function. When called, it will pause the Lua thread that called the function until a result is ready to be returned, without interrupting other scripts. Yields </> PreloadController:PreloadAssets(Assets: {string | Sound | Animation } | string | Sound | Animation -Theassetstopreload) → Promise<T>-- Returns a promise that resolves once the assets are loaded, and rejects if they were not able to be loaded Preloads assets in-game This should be fired before knit starts If fired before knit starts, the promise will resolve after all other pending assets in the AssetToLoad table are loaded If fired after knit starts, the promise will resolve after the provided assets are loaded "},{"title":"WaitForPreloadToComplete","type":1,"pageTitle":"PreloadController","url":"/roblox-sparkles-docs/api/PreloadController#WaitForPreloadToComplete","content":"This is a yielding function. When called, it will pause the Lua thread that called the function until a result is ready to be returned, without interrupting other scripts. Yields </> PreloadController:WaitForPreloadToComplete() → boolean-- Returns true if all assets were loaded successfully, and false if not (Timed out) Yields until all assets are loaded, or the game times out w/loading "},{"title":"KnitInit","type":1,"pageTitle":"PreloadController","url":"/roblox-sparkles-docs/api/PreloadController#KnitInit","content":"</> PreloadController:KnitInit() → () Initialize PreloadController "},{"title":"KnitStart","type":1,"pageTitle":"PreloadController","url":"/roblox-sparkles-docs/api/PreloadController#KnitStart","content":"</> PreloadController:KnitStart() → () Start PreloadController Load anything in the AssetsToLoad queue, set AssetsLoaded to true once done, and then fire AssetsLoadedSignal to indicate to waiting promises that everything pending was loaded "},{"title":"PropHighlightController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/PropHighlightController","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"PropHighlightController","url":"/roblox-sparkles-docs/api/PropHighlightController#properties","content":" "},{"title":"DEFAULT_COLOR","type":1,"pageTitle":"PropHighlightController","url":"/roblox-sparkles-docs/api/PropHighlightController#DEFAULT_COLOR","content":"</> PropHighlightController.DEFAULT_COLOR: Color3 Default selection box color "},{"title":"SELECTED_COLOR","type":1,"pageTitle":"PropHighlightController","url":"/roblox-sparkles-docs/api/PropHighlightController#SELECTED_COLOR","content":"</> PropHighlightController.SELECTED_COLOR: Color3 Default selection box highlight color "},{"title":"FURNITURE_TAG","type":1,"pageTitle":"PropHighlightController","url":"/roblox-sparkles-docs/api/PropHighlightController#FURNITURE_TAG","content":"</> PropHighlightController.FURNITURE_TAG: string String pattern used for identifying hitboxes assigned to a specific shop owner "},{"title":"Functions","type":1,"pageTitle":"PropHighlightController","url":"/roblox-sparkles-docs/api/PropHighlightController#functions","content":" "},{"title":"StartSelecting","type":1,"pageTitle":"PropHighlightController","url":"/roblox-sparkles-docs/api/PropHighlightController#StartSelecting","content":"</> PropHighlightController:StartSelecting( hoverColor: Color3? ,-- highlight color of prop mouse is hovering over onSelect: function?-- function to run upon clicking - selected prop model is passed as an argument ) → nil Start prop selection mode, enabling player to select highlighted props NOTE: if you call this without first highlighting props, the player won't be able to select anything! "},{"title":"HighlightEnchantable","type":1,"pageTitle":"PropHighlightController","url":"/roblox-sparkles-docs/api/PropHighlightController#HighlightEnchantable","content":"</> PropHighlightController:HighlightEnchantable( enchantName: string-- name of enchant ) → nil Highlight enchantable props "},{"title":"HighlightStockable","type":1,"pageTitle":"PropHighlightController","url":"/roblox-sparkles-docs/api/PropHighlightController#HighlightStockable","content":"</> PropHighlightController:HighlightStockable( productName: string-- name of product to find stockable shelves for ) → nil Highlight stockable shelves "},{"title":"HighlightAll","type":1,"pageTitle":"PropHighlightController","url":"/roblox-sparkles-docs/api/PropHighlightController#HighlightAll","content":"</> PropHighlightController:HighlightAll() → nil Highlight all props placed by local player "},{"title":"Select","type":1,"pageTitle":"PropHighlightController","url":"/roblox-sparkles-docs/api/PropHighlightController#Select","content":"</> PropHighlightController:Select( model: Model ,-- prop to select selectionColor: Color3 -- color to set the selection box to ) → nil Select a prop "},{"title":"Deselect","type":1,"pageTitle":"PropHighlightController","url":"/roblox-sparkles-docs/api/PropHighlightController#Deselect","content":"</> PropHighlightController:Deselect() → nil Deselect currently selected prop if it exists "},{"title":"ClearHighlights","type":1,"pageTitle":"PropHighlightController","url":"/roblox-sparkles-docs/api/PropHighlightController#ClearHighlights","content":"</> PropHighlightController:ClearHighlights() → nil Remove all selection boxes "},{"title":"StopSelecting","type":1,"pageTitle":"PropHighlightController","url":"/roblox-sparkles-docs/api/PropHighlightController#StopSelecting","content":"</> PropHighlightController:StopSelecting() → nil Stop prop selection mode, and remove all selection boxes "},{"title":"GetHighlightedProps","type":1,"pageTitle":"PropHighlightController","url":"/roblox-sparkles-docs/api/PropHighlightController#GetHighlightedProps","content":"</> PropHighlightController:GetHighlightedProps() → table-- table of highlighted prop models Get currently highlighted props "},{"title":"GetSelected","type":1,"pageTitle":"PropHighlightController","url":"/roblox-sparkles-docs/api/PropHighlightController#GetSelected","content":"</> PropHighlightController:GetSelected() → Model? -- selected prop model if a prop is selected, nil otherwise Get currently selected prop "},{"title":"KnitStart","type":1,"pageTitle":"PropHighlightController","url":"/roblox-sparkles-docs/api/PropHighlightController#KnitStart","content":"</> PropHighlightController:KnitStart() → nil Start PropHighlightController "},{"title":"ShelfFurniture","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/ShelfFurniture","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"ShelfFurniture","url":"/roblox-sparkles-docs/api/ShelfFurniture#functions","content":" "},{"title":"new","type":1,"pageTitle":"ShelfFurniture","url":"/roblox-sparkles-docs/api/ShelfFurniture#new","content":"</> ShelfFurniture.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"ReplicaService","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/ReplicaService","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"ReplicaService","url":"/roblox-sparkles-docs/api/ReplicaService#functions","content":" "},{"title":"CreateReplica","type":1,"pageTitle":"ReplicaService","url":"/roblox-sparkles-docs/api/ReplicaService#CreateReplica","content":"</> ReplicaService:CreateReplica( ClassName: string,-- The ClassName of the Replica object Replication: {Player },-- An array of player(s) to replicate this data to Tags: {string},-- An optional array of strings to assign to this object (For keeping track of inheritance) Body: {any}-- A key/pair table of values to replicate to the client (Accepts strings as keys, and key/pair values/arrays - do not mix key/pair + arrays together!) ) → Promise<T>-- Returns a promise that resolves with Replica, replicaId: string if a replica is successfully created, and rejects if it is not Create a new Replica object "},{"title":"DestroyReplica","type":1,"pageTitle":"ReplicaService","url":"/roblox-sparkles-docs/api/ReplicaService#DestroyReplica","content":"</> ReplicaService:DestroyReplica( replicaId: string-- The ID of the replica to destroy ) → Promise<T>-- Returns a promise that resolves if the replica is destroyed, and rejects if it is not Destroys a Replica object "},{"title":"KnitInit","type":1,"pageTitle":"ReplicaService","url":"/roblox-sparkles-docs/api/ReplicaService#KnitInit","content":"</> ReplicaService:KnitInit() → () Initialize ReplicaService "},{"title":"KnitStart","type":1,"pageTitle":"ReplicaService","url":"/roblox-sparkles-docs/api/ReplicaService#KnitStart","content":"</> ReplicaService:KnitStart() → () Start ReplicaService Goes through the list of currently loaded replicas (On init) and initiates them to the respective clients Also creates new replica instances (From existing ones) when players join the game "},{"title":"PlacementService","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/PlacementService","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#functions","content":" "},{"title":"MoveModel","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#MoveModel","content":"</> PlacementService:MoveModel( player: Player , args: table-- table of arguments {ReplicaId: string, Floor: BasePart, Placement: CFrame} ) → boolean-- true if prop successfully moved, false otherwise Move bounding box of prop "},{"title":"ToggleStoreOpen","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#ToggleStoreOpen","content":"This item only works when running on the server. Server </> PlacementService:ToggleStoreOpen( Player: Player ,-- The player to toggle the store open/close state for Open: boolean-- Whether the store is open or not ) → () Sets the state of a player's store to open/closed (NPCs can enter/not enter) "},{"title":"ChangeBuildingDesign","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#ChangeBuildingDesign","content":"This item only works when running on the server. Server </> PlacementService:ChangeBuildingDesign( Player: Player ,-- The player to change the building design for (With their shop) newBuildingDesign: string?-- The chosen building design - if nil, building will default to default design for that store plot ) → boolean-- Returns true if the building design was successfully updated, and false if not Changes the design of a player's building "},{"title":"PlaceModel","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#PlaceModel","content":"</> PlacementService:PlaceModel( Player: Player , args: table-- table of arguments {Model: string, Floor: BasePart} ) → Promise<T>-- Returns a promise that resolves if successfully placed, and rejects otherwise Place a model "},{"title":"UnequipWand","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#UnequipWand","content":"</> PlacementService:UnequipWand(player: Player ) → () Destroy player wand model if it exists under their character "},{"title":"EquipWand","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#EquipWand","content":"</> PlacementService:EquipWand(player: Player ) → () Create a wand model and parent it to the player's character "},{"title":"StockShelf","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#StockShelf","content":"</> PlacementService:StockShelf( Player: Player ,-- The owner of the shop floorId: string,-- The unique ID of the floor propId: string,-- The prop (Replica) ID of the shelf desiredProduct: string-- The desired product to stock ) → Promise<T>-- Returns a promise that resolves with the new stock configuration for the shelf if successfully stocked, and rejects if it cannot be stocked Stocks a shelf with specified item "},{"title":"EnchantProp","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#EnchantProp","content":"</> PlacementService:EnchantProp( player: Player ,-- The owner of the shop floorId: string,-- The unique ID of the floor propId: string,-- The prop (Replica) ID of the shelf enchantmentName: string-- Name of enchantment ) → Promise<T>-- Returns a promise that resolves if successfully enchanted Toggle specified enchantment for a prop "},{"title":"GetProps","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#GetProps","content":"</> PlacementService:GetProps( floorId: string,-- The ID of the floor propId: string-- The replica ID of the prop ) → table-- Returns a key/pair table of the currently placed down props for the floor, and returns nil if the floor cannot be found for some reason Gets the placed props of a specific shop floor "},{"title":"RemoveModel","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#RemoveModel","content":"</> PlacementService:RemoveModel( Player: Player , args: table ) → boolean-- true if successfully removed, false otherwise Removes a model "},{"title":"GetMatrix","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#GetMatrix","content":"</> PlacementService:GetMatrix( floorId: string-- The generated GUID of the floor ) → table-- The layout of the shop floor Get pathfinding matrix of a given shop's floor layout "},{"title":"GetMatrixCoordinate","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#GetMatrixCoordinate","content":"</> PlacementService:GetMatrixCoordinate( floorId: string,-- The generated GUID of the floor position: Vector3 ) → number,number-- i, j representing matrix[i][j] Get matrix coordinates of a position relative to a shop's floor "},{"title":"GetPropById","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#GetPropById","content":"</> PlacementService:GetPropById( floorId: string,-- ID of floor prop is placed on replicaId: string-- replica ID of prop ) → table?-- prop object if floor and prop exist, nil otherwise Get a prop by id "},{"title":"GetShelfData","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#GetShelfData","content":"</> PlacementService:GetShelfData( floorId: string,-- The floor ID to retrieve a specific shelf data shelfId: string-- The shelf (Replica) id to retrieve shelf data for ) → table?-- Returns a table of the shelf data from the prop class if it exists, and nil if not Returns the shelf data from the ShopFloor class of a specific floor "},{"title":"LookForProp","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#LookForProp","content":"</> PlacementService:LookForProp( floorId: string,-- ID of floor we want to search in propName: string-- name of prop to look for ) → table-- list of props Look for prop given floorId "},{"title":"LookForServices","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#LookForServices","content":"</> PlacementService:LookForServices( serviceList: table,-- List of services to look for e.g. {"TestService1", "TestService2"} searchOrigin: CFrame? ,-- (Optional) The position to consider when eliminating store choices (Eg. All stores within X studs of Y position) floorId: string?-- (Optional) The generated GUID of the floor ) → table?-- Returns a table that contains all of the stores, and nil if no stores are found Look for stores with service props corresponding to given list of services "},{"title":"LookForProducts","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#LookForProducts","content":"</> PlacementService:LookForProducts( shoppingList: table,-- Key/pair table of items to search stores for (Eg. {Eggs=1,Milk=2,Bread=3}) searchOrigin: Vector3? ,-- (Optional) The position to consider when eliminating store choices (Eg. All stores within X studs of Y position) floorId: string?-- (Optional) The generated GUID of the floor ) → table?-- Returns a table that contains all of the stores, and nil if no stores are found Returns an array of stores that stock the item in question "},{"title":"GetStockedProducts","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#GetStockedProducts","content":"</> PlacementService:GetStockedProducts() → table-- Returns an array (Key/pair) of all currently stocked market items in-game Returns an array of the current stock of items across the entire market "},{"title":"GetAvailableServices","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#GetAvailableServices","content":"</> PlacementService:GetAvailableServices() → table-- Returns an array (Key/pair) of all currently available services in the game Returns an array of the available services across the entire market "},{"title":"AssignFloorToPlayer","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#AssignFloorToPlayer","content":"</> PlacementService:AssignFloorToPlayer( Player: Player ,-- The player to assign ownership of the floor part to floorID: string-- (Optional) The ID of the floor to assign to the player. If floorID is nil, a random available floor will be assigned ) → Promise<T>-- Returns a promise that resolves with the selected floor ID (string) if a floor is assigned to the player, and rejects if a floor cannot be assigned to a player Assign an existing floor object to the player in question "},{"title":"KnitInit","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#KnitInit","content":"</> PlacementService:KnitInit() → nil Initializes PlacementService "},{"title":"KnitStart","type":1,"pageTitle":"PlacementService","url":"/roblox-sparkles-docs/api/PlacementService#KnitStart","content":"</> PlacementService:KnitStart() → nil Start PlacementService "},{"title":"ShelfScreenController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/ShelfScreenController","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"ShelfScreenController","url":"/roblox-sparkles-docs/api/ShelfScreenController#functions","content":" "},{"title":"StopSelecting","type":1,"pageTitle":"ShelfScreenController","url":"/roblox-sparkles-docs/api/ShelfScreenController#StopSelecting","content":"This item only works when running on the client. Client </> ShelfScreenController:StopSelecting() → () Deselects and stops selecting instantly. "},{"title":"OnSelect","type":1,"pageTitle":"ShelfScreenController","url":"/roblox-sparkles-docs/api/ShelfScreenController#OnSelect","content":"</> ShelfScreenController:OnSelect(button: ImageButton ) → nil Run whenever a product button is clicked "},{"title":"ClearSelection","type":1,"pageTitle":"ShelfScreenController","url":"/roblox-sparkles-docs/api/ShelfScreenController#ClearSelection","content":"</> ShelfScreenController:ClearSelection() → nil Clear the current selection option "},{"title":"ShowCategoryButtons","type":1,"pageTitle":"ShelfScreenController","url":"/roblox-sparkles-docs/api/ShelfScreenController#ShowCategoryButtons","content":"</> ShelfScreenController:ShowCategoryButtons() → nil Show product category buttons in the category bar and hide non category buttons "},{"title":"HideCategoryButtons","type":1,"pageTitle":"ShelfScreenController","url":"/roblox-sparkles-docs/api/ShelfScreenController#HideCategoryButtons","content":"</> ShelfScreenController:HideCategoryButtons() → nil Hide product category buttons "},{"title":"SelectProductCategory","type":1,"pageTitle":"ShelfScreenController","url":"/roblox-sparkles-docs/api/ShelfScreenController#SelectProductCategory","content":"</> ShelfScreenController:SelectProductCategory( category: string-- name of category ) → nil Select a product category and show buttons of that category "},{"title":"KnitStart","type":1,"pageTitle":"ShelfScreenController","url":"/roblox-sparkles-docs/api/ShelfScreenController#KnitStart","content":"This item only works when running on the client. Client </> ShelfScreenController:KnitStart() → nil Start ShopScreenController "},{"title":"SoundController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/SoundController","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"SoundController","url":"/roblox-sparkles-docs/api/SoundController#functions","content":" "},{"title":"PlayMusic","type":1,"pageTitle":"SoundController","url":"/roblox-sparkles-docs/api/SoundController#PlayMusic","content":"</> SoundController:PlayMusic( musicID: string?-- The name of the music file to play. If an argument is not provided, the current track is stopped ) → () Plays back a music file in-game "},{"title":"KnitInit","type":1,"pageTitle":"SoundController","url":"/roblox-sparkles-docs/api/SoundController#KnitInit","content":"</> SoundController:KnitInit() → () Initialize SoundController "},{"title":"KnitStart","type":1,"pageTitle":"SoundController","url":"/roblox-sparkles-docs/api/SoundController#KnitStart","content":"</> SoundController:KnitStart() → () Start SoundController "},{"title":"TopMenuController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/TopMenuController","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"TopMenuController","url":"/roblox-sparkles-docs/api/TopMenuController#functions","content":" "},{"title":"KnitInit","type":1,"pageTitle":"TopMenuController","url":"/roblox-sparkles-docs/api/TopMenuController#KnitInit","content":"This item only works when running on the client. Client </> TopMenuController:KnitInit() → nil Initialize TopMenuController "},{"title":"KnitStart","type":1,"pageTitle":"TopMenuController","url":"/roblox-sparkles-docs/api/TopMenuController#KnitStart","content":"This item only works when running on the client. Client </> TopMenuController:KnitStart() → nil Start TopMenuController "},{"title":"SideMenuController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/SideMenuController","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"SideMenuController","url":"/roblox-sparkles-docs/api/SideMenuController#functions","content":" "},{"title":"SetupMobileFlightControls","type":1,"pageTitle":"SideMenuController","url":"/roblox-sparkles-docs/api/SideMenuController#SetupMobileFlightControls","content":"</> SideMenuController:SetupMobileFlightControls() → nil Setup a player's MobileFlightControls to allow for mobile users to more easily control flight movement. "},{"title":"KnitInit","type":1,"pageTitle":"SideMenuController","url":"/roblox-sparkles-docs/api/SideMenuController#KnitInit","content":"</> SideMenuController:KnitInit() → nil Initialize side menu controller and preload art related assets "},{"title":"KnitStart","type":1,"pageTitle":"SideMenuController","url":"/roblox-sparkles-docs/api/SideMenuController#KnitStart","content":"</> SideMenuController:KnitStart() → nil Initialize side menu "},{"title":"SmallPawRug","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/SmallPawRug","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"SmallPawRug","url":"/roblox-sparkles-docs/api/SmallPawRug#functions","content":" "},{"title":"new","type":1,"pageTitle":"SmallPawRug","url":"/roblox-sparkles-docs/api/SmallPawRug#new","content":"</> SmallPawRug.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"StockingController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/StockingController","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"StockingController","url":"/roblox-sparkles-docs/api/StockingController#functions","content":" "},{"title":"StartStocking","type":1,"pageTitle":"StockingController","url":"/roblox-sparkles-docs/api/StockingController#StartStocking","content":"</> StockingController:StartStocking( productName: string-- name of product to stock ) → nil Start stocking mode "},{"title":"StopStocking","type":1,"pageTitle":"StockingController","url":"/roblox-sparkles-docs/api/StockingController#StopStocking","content":"</> StockingController:StopStocking() → nil Stop stocking mode "},{"title":"KnitStart","type":1,"pageTitle":"StockingController","url":"/roblox-sparkles-docs/api/StockingController#KnitStart","content":"</> StockingController:KnitStart() → nil Start StockingController "},{"title":"ShopService.Client","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/ShopService.Client","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"ShopService.Client","url":"/roblox-sparkles-docs/api/ShopService.Client#functions","content":" "},{"title":"UnlockItem","type":1,"pageTitle":"ShopService.Client","url":"/roblox-sparkles-docs/api/ShopService.Client#UnlockItem","content":"This item only works when running on the client. Client </> ShopService.Client:UnlockItem( player: Player ,-- player invoking the function itemName: string-- name of item to unlock ) → Promise<T>-- promise that resolves if unlocked successfully and rejects otherwise Client access to UnlockItem "},{"title":"PurchaseItem","type":1,"pageTitle":"ShopService.Client","url":"/roblox-sparkles-docs/api/ShopService.Client#PurchaseItem","content":"This item only works when running on the client. Client </> ShopService.Client:PurchaseItem( player: Player ,-- player purchasing item itemName: string,-- name of item amount: number-- amount to purchase ) → Promise<T>-- promise that resolves with the new amount of the item the player owns if purchased successfully, and rejects otherwise Client access to PurchaseItem "},{"title":"PurchaseAccess","type":1,"pageTitle":"ShopService.Client","url":"/roblox-sparkles-docs/api/ShopService.Client#PurchaseAccess","content":"This item only works when running on the client. Client </> ShopService.Client:PurchaseAccess( player: Player ,-- player purchasing item itemName: string-- name of item ) → Promise<T>-- promise that resolves with the new amount of the item the player owns if purchased successfully, and rejects otherwise Client access to PurchaseAccess "},{"title":"UseEnchantment","type":1,"pageTitle":"ShopService.Client","url":"/roblox-sparkles-docs/api/ShopService.Client#UseEnchantment","content":"This item only works when running on the client. Client </> ShopService.Client:UseEnchantment( player: Player ,-- player purchasing enchantment itemName: string-- name of enchantment ) → Promise<T>-- promise that resolves with the new amount of the item the player owns if purchased successfully, and rejects otherwise Client access to UseEnchantment "},{"title":"ServiceBaseClass","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/ServiceBaseClass","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"ServiceBaseClass","url":"/roblox-sparkles-docs/api/ServiceBaseClass#properties","content":" "},{"title":"MAX_CUSTOMERS_IN_LINE","type":1,"pageTitle":"ServiceBaseClass","url":"/roblox-sparkles-docs/api/ServiceBaseClass#MAX_CUSTOMERS_IN_LINE","content":"</> ServiceBaseClass.MAX_CUSTOMERS_IN_LINE: number The amount of customers (Max) that can line up at a prop at once This is the max number of customers in a line, regardless of depth. If items are in front of the prop, the max queue depth is reduced to fit as many customers as possible (Up to the max queue limit) "},{"title":"CUSTOMER_PURCHASE_TIMEOUT","type":1,"pageTitle":"ServiceBaseClass","url":"/roblox-sparkles-docs/api/ServiceBaseClass#CUSTOMER_PURCHASE_TIMEOUT","content":"</> ServiceBaseClass.CUSTOMER_PURCHASE_TIMEOUT: number How long a customer will wait after approaching a service (To check out w/the items in their cart/ask for a specific service) before they walk out of the store/abandon the transaction "},{"title":"Functions","type":1,"pageTitle":"ServiceBaseClass","url":"/roblox-sparkles-docs/api/ServiceBaseClass#functions","content":" "},{"title":"_automaticService","type":1,"pageTitle":"ServiceBaseClass","url":"/roblox-sparkles-docs/api/ServiceBaseClass#_automaticService","content":"</> ServiceBaseClass._automaticService( self: table,-- The prop class doEnable: boolean-- Should this enchantment be enabled? ) → nil Automatic checkout enchantment (Shop owner does not need to interact w/this prop to process customer transactions) This function toggles the enhancement's functionality (Whether it's enabled or not) "},{"title":"_activatedService","type":1,"pageTitle":"ServiceBaseClass","url":"/roblox-sparkles-docs/api/ServiceBaseClass#_activatedService","content":"</> ServiceBaseClass._activatedService( self: table,-- The respective prop class Player: Player -- The player invoking the remote ) → nil Let the server know that the client has activated the service prop prompt "},{"title":"new","type":1,"pageTitle":"ServiceBaseClass","url":"/roblox-sparkles-docs/api/ServiceBaseClass#new","content":"</> ServiceBaseClass.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Creates a new furniture object "},{"title":"OnClientInit","type":1,"pageTitle":"ServiceBaseClass","url":"/roblox-sparkles-docs/api/ServiceBaseClass#OnClientInit","content":"This item only works when running on the client. Client </> ServiceBaseClass:OnClientInit() → () Set up clientside prop behavior "},{"title":"OnServerInit","type":1,"pageTitle":"ServiceBaseClass","url":"/roblox-sparkles-docs/api/ServiceBaseClass#OnServerInit","content":"This item only works when running on the server. Server </> ServiceBaseClass:OnServerInit() → () Set up server-side prop behavior "},{"title":"AddCustomerToQueue","type":1,"pageTitle":"ServiceBaseClass","url":"/roblox-sparkles-docs/api/ServiceBaseClass#AddCustomerToQueue","content":"</> ServiceBaseClass:AddCustomerToQueue( Customer: table-- The customer table to add to the prop queue ) → boolean-- Returns a boolean if the customer was successfully added to the queue, and returns false if not Adds a customer to the prop's queue for processing "},{"title":"RemoveCustomerFromQueue","type":1,"pageTitle":"ServiceBaseClass","url":"/roblox-sparkles-docs/api/ServiceBaseClass#RemoveCustomerFromQueue","content":"</> ServiceBaseClass:RemoveCustomerFromQueue( CustomerID: string,-- ID of the customer to remove from the queue refreshQueue: boolean?-- Whether the queue should be automatically refreshed w/NPC positions since this customer was removed from the list ) → boolean-- Returns true if the customer was successfully removed from the queue, and false if not Removes a customer from the queue "},{"title":"ShopService","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/ShopService","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"ShopService","url":"/roblox-sparkles-docs/api/ShopService#properties","content":" "},{"title":"UNLOCK_COST_MULTIPLIER","type":1,"pageTitle":"ShopService","url":"/roblox-sparkles-docs/api/ShopService#UNLOCK_COST_MULTIPLIER","content":"</> ShopService.UNLOCK_COST_MULTIPLIER: number Cost to unlock an item is normal purchase price multiplied by this "},{"title":"MAX_PURCHASE_HISTORY_NUMBER","type":1,"pageTitle":"ShopService","url":"/roblox-sparkles-docs/api/ShopService#MAX_PURCHASE_HISTORY_NUMBER","content":"</> ShopService.MAX_PURCHASE_HISTORY_NUMBER: number The maximum amount of transactions logged before data is removed. "},{"title":"Functions","type":1,"pageTitle":"ShopService","url":"/roblox-sparkles-docs/api/ShopService#functions","content":" "},{"title":"UnlockItem","type":1,"pageTitle":"ShopService","url":"/roblox-sparkles-docs/api/ShopService#UnlockItem","content":"</> ShopService:UnlockItem( player: Player ,-- player invoking the function itemName: string-- name of item to unlock ) → Promise<T>-- promise that resolves if unlocked successfully and rejects otherwise Unlock an item "},{"title":"AddToPurchaseHistory","type":1,"pageTitle":"ShopService","url":"/roblox-sparkles-docs/api/ShopService#AddToPurchaseHistory","content":"</> ShopService:AddToPurchaseHistory( player: Player ,-- player purchasing item itemName: string,-- name of item isEnchantment: boolean-- Is the item enchanted? ) → nil Add to purchase history log for player. "},{"title":"PurchaseItem","type":1,"pageTitle":"ShopService","url":"/roblox-sparkles-docs/api/ShopService#PurchaseItem","content":"</> ShopService:PurchaseItem( player: Player ,-- player purchasing item itemName: string,-- name of item amount: number-- amount to purchase ) → Promise<T>-- promise that resolves with the new amount of the item the player owns if purchased successfully, and rejects otherwise Purchase specified amount of item Currently does not check whether or not the player has the item unlocked "},{"title":"UseEnchantment","type":1,"pageTitle":"ShopService","url":"/roblox-sparkles-docs/api/ShopService#UseEnchantment","content":"</> ShopService:UseEnchantment( player: Player ,-- player purchasing item itemName: string-- name of item ) → Promise<T>-- promise that resolves with the new amount of the item the player owns if purchased successfully, and rejects otherwise Handles player using an enchantment on object. "},{"title":"PurchaseAccess","type":1,"pageTitle":"ShopService","url":"/roblox-sparkles-docs/api/ShopService#PurchaseAccess","content":"</> ShopService:PurchaseAccess( player: Player ,-- player purchasing item itemName: string-- name of item ) → Promise<T>-- promise that resolves with the new amount of the item the player owns if purchased successfully, and rejects otherwise Handles player buying access to an object. "},{"title":"GetAmount","type":1,"pageTitle":"ShopService","url":"/roblox-sparkles-docs/api/ShopService#GetAmount","content":"</> ShopService:GetAmount( player: Player ,-- player to fetch information for itemName: string-- name of item ) → Promise<T>-- promise that resolves with the amount of the item the player owns, rejects if the item is not unlocked yet Get amount of a specified item in a player's product inventory "},{"title":"ChangeAmount","type":1,"pageTitle":"ShopService","url":"/roblox-sparkles-docs/api/ShopService#ChangeAmount","content":"</> ShopService:ChangeAmount( player: Player ,-- player to change for itemName: string,-- name of item amount: number,-- amount to change by tableIndex: string-- the table which should be updated (default: ProductInventory) ) → Promise<T>-- promise that resolves with the new amount of the item the player owns Change amount of a specified item in a player's product inventory Currently automatically unlocks the item for free if not already unlocked "},{"title":"KnitStart","type":1,"pageTitle":"ShopService","url":"/roblox-sparkles-docs/api/ShopService#KnitStart","content":"</> ShopService:KnitStart() → nil Start ShopService "},{"title":"ShelfBaseClass","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/ShelfBaseClass","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"ShelfBaseClass","url":"/roblox-sparkles-docs/api/ShelfBaseClass#properties","content":" "},{"title":"PRODUCT_ROW_SIZES","type":1,"pageTitle":"ShelfBaseClass","url":"/roblox-sparkles-docs/api/ShelfBaseClass#PRODUCT_ROW_SIZES","content":"</> ShelfBaseClass.PRODUCT_ROW_SIZES: number The size of props (Depth-wise) in studs based on their classification Props are spaced out based on the position of the last placed item in the row array + the size (Depth) of the prop's class "},{"title":"Functions","type":1,"pageTitle":"ShelfBaseClass","url":"/roblox-sparkles-docs/api/ShelfBaseClass#functions","content":" "},{"title":"_stockShelf","type":1,"pageTitle":"ShelfBaseClass","url":"/roblox-sparkles-docs/api/ShelfBaseClass#_stockShelf","content":"</> ShelfBaseClass._stockShelf( self: table,-- The respective prop class Player: Player ,-- The player invoking the remote ...: any-- Variadic args ) → nil Stocks the shelf model w/a desired item, or erases the existing items from the shelf "},{"title":"new","type":1,"pageTitle":"ShelfBaseClass","url":"/roblox-sparkles-docs/api/ShelfBaseClass#new","content":"</> ShelfBaseClass.new( floorId: string,-- The ID of the floor this prop is being placed on ownerId: number,-- The user ID of the player who owns the floor this prop is placed on existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → table-- Returns a new furniture class Create new shelf object "},{"title":"OnClientInit","type":1,"pageTitle":"ShelfBaseClass","url":"/roblox-sparkles-docs/api/ShelfBaseClass#OnClientInit","content":"This item only works when running on the client. Client </> ShelfBaseClass:OnClientInit() → () Set up clientside shelf behavior "},{"title":"StockShelf","type":1,"pageTitle":"ShelfBaseClass","url":"/roblox-sparkles-docs/api/ShelfBaseClass#StockShelf","content":"This item only works when running on the server. Server </> ShelfBaseClass:StockShelf( desiredProduct: string,-- The desired product to stock on the shelf quantity: number?-- The quantity of the desired item to stock on the shelf (Defaults to 1). If quantity exceeds the available amount of desiredItem or quantity exceeds the available free space on the shelving unit, the promise will reject ) → Promise<T>-- Returns a promise that resolves with the new available amount of desiredItem from the shop owner's inventory, and rejects if an error occurs, there's not enough of desiredItem in the shop owner's inventory, or the quantity exceeds the free capacity of the shelf Stocks the shelf "},{"title":"TakeItemFromShelf","type":1,"pageTitle":"ShelfBaseClass","url":"/roblox-sparkles-docs/api/ShelfBaseClass#TakeItemFromShelf","content":"This item only works when running on the server. Server </> ShelfBaseClass:TakeItemFromShelf( desiredProduct: string,-- The desired product to take off the shelf quantity: number?-- How many of the item to remove from the shelf - defaults to 1 ) → () Take items from shelf "},{"title":"SetTotalItemCapacity","type":1,"pageTitle":"ShelfBaseClass","url":"/roblox-sparkles-docs/api/ShelfBaseClass#SetTotalItemCapacity","content":"</> ShelfBaseClass:SetTotalItemCapacity() → () Calculate total item capacity of this shelf "},{"title":"SetReplicaData","type":1,"pageTitle":"ShelfBaseClass","url":"/roblox-sparkles-docs/api/ShelfBaseClass#SetReplicaData","content":"</> ShelfBaseClass:SetReplicaData( existingFurnitureData: table?-- (Optional) Existing saved furniture data for this prop ) → () Set replica data for this shelf "},{"title":"TutorialController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/TutorialController","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"TutorialController","url":"/roblox-sparkles-docs/api/TutorialController#properties","content":" "},{"title":"CENTER_OF_MAP","type":1,"pageTitle":"TutorialController","url":"/roblox-sparkles-docs/api/TutorialController#CENTER_OF_MAP","content":"</> TutorialController.CENTER_OF_MAP: number The origin point of the map (Center). "},{"title":"OFFSET_CFRAME","type":1,"pageTitle":"TutorialController","url":"/roblox-sparkles-docs/api/TutorialController#OFFSET_CFRAME","content":"</> TutorialController.OFFSET_CFRAME: number The offset CFrame to be added to the origin, to then rotate around. "},{"title":"ROTATE_SPEED","type":1,"pageTitle":"TutorialController","url":"/roblox-sparkles-docs/api/TutorialController#ROTATE_SPEED","content":"</> TutorialController.ROTATE_SPEED: number How quickly the camera should rotate. "},{"title":"CENTER_OF_MAP","type":1,"pageTitle":"TutorialController","url":"/roblox-sparkles-docs/api/TutorialController#CENTER_OF_MAP","content":"</> TutorialController.CENTER_OF_MAP: CFrame The origin point of the map (Center). "},{"title":"Functions","type":1,"pageTitle":"TutorialController","url":"/roblox-sparkles-docs/api/TutorialController#functions","content":" "},{"title":"KnitInit","type":1,"pageTitle":"TutorialController","url":"/roblox-sparkles-docs/api/TutorialController#KnitInit","content":"This item only works when running on the client. Client </> TutorialController:KnitInit() → nil Initialize TutorialController "},{"title":"KnitStart","type":1,"pageTitle":"TutorialController","url":"/roblox-sparkles-docs/api/TutorialController#KnitStart","content":"This item only works when running on the client. Client </> TutorialController:KnitStart() → nil Start TutorialController "},{"title":"Types","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/Types","content":"","keywords":""},{"title":"Types","type":1,"pageTitle":"Types","url":"/roblox-sparkles-docs/api/Types#types","content":" "},{"title":"ANY_TABLE","type":1,"pageTitle":"Types","url":"/roblox-sparkles-docs/api/Types#ANY_TABLE","content":"</> type ANY_TABLE = {[any]: any} Generic table type (Wildcard) - accepts any values "},{"title":"ReplicaPathListener","type":1,"pageTitle":"Types","url":"/roblox-sparkles-docs/api/Types#ReplicaPathListener","content":"</> type ReplicaPathListener = ( newValue: any, oldValue: any ) → () "},{"title":"ReplicaListener","type":1,"pageTitle":"Types","url":"/roblox-sparkles-docs/api/Types#ReplicaListener","content":"</> type ReplicaListener = (replica: Replica) → () "},{"title":"ReplicaParams","type":1,"pageTitle":"Types","url":"/roblox-sparkles-docs/api/Types#ReplicaParams","content":"</> type ReplicaParams = { ClassName: string, Data: {[string]: any}, Tags: {[string]: any}, Replication: (string | {Player }) } Replica class parameters "},{"title":"ReplicaPath","type":1,"pageTitle":"Types","url":"/roblox-sparkles-docs/api/Types#ReplicaPath","content":"</> type ReplicaPath = {string} A path to a key in the player's data (Eg. "_configuration._build") "},{"title":"Replica","type":1,"pageTitle":"Types","url":"/roblox-sparkles-docs/api/Types#Replica","content":"</> type Replica = {} ClassName: string, Data: { any }, Tags: { any }, Replication: { any }, SetParent: (self: Replica, replica: Replica) -> (), DestroyFor: (self: Replica, Player) -> (), Destroy: (self: Replica) -> (), SetValue: (self: Replica, path: string, value: any) -> (), SetValues: (self: Replica, path: string, values: { [string]: any }) -> (), ArrayInsert: (self: Replica, path: string, value: any) -> (), ArraySet: (self: Replica, path: string, index: number, value: any) -> (), ArrayRemove: (self: Replica, path: string, index: number) -> (), ConnectOnServerEvent: (self: Replica, listener: () -> ()) -> (), ConnectOnClientEvent: (self: Replica, listener: () -> ()) -> (), ListenToChildAdded: (self: Replica, child: Replica) -> (), ListenToRaw: (self: Replica, listener: (listenerType: string, path: { string }, any) -> ()) -> (), ListenToChange: (self: Replica, path: string, listener: (newValue: any, oldValue: any) -> ()) -> (), ListenToNewKey: (self: Replica, path: string, listener: (value: any, newKey: string) -> ()) -> (), ListenToKeyChanged: (self: Replica, path: string, listener: (newValue: any, oldValue: any) -> ()) -> (), ListenToArrayInsert: (self: Replica, path: string, listener: (index: number, value: any) -> ()) -> (), ListenToArraySet: (self: Replica, path: string, listener: (index: number, value: any) -> ()) -> (), ListenToArrayRemove: (self: Replica, path: string, listener: (index: number, value: any) -> ()) -> (), } The members of the server/client Replica controller/service "},{"title":"TutorialNPC","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/TutorialNPC","content":"","keywords":""},{"title":"Functions","type":1,"pageTitle":"TutorialNPC","url":"/roblox-sparkles-docs/api/TutorialNPC#functions","content":" "},{"title":"new","type":1,"pageTitle":"TutorialNPC","url":"/roblox-sparkles-docs/api/TutorialNPC#new","content":"</> TutorialNPC.new( NPCDesign: string,-- The design to load for the NPC startPosition: CFrame -- The starting position of the NPC ) → table-- Returns a new tutorial NPC class Creates a new tutorial NPC class "},{"title":"PivotToScreenPosition","type":1,"pageTitle":"TutorialNPC","url":"/roblox-sparkles-docs/api/TutorialNPC#PivotToScreenPosition","content":"</> TutorialNPC:PivotToScreenPosition( Target: Vector2 ,-- The 2D position (In pixels) of where the NPC should pivot to Depth: number,-- How far away from the camera the NPC should be Rotation: CFrame? -- The rotation CFrame of the NPC (Applied relative to the camera's cframe) ) → Promise<T>-- Returns a promise that resolves once the NPC reaches the desired target/depth/rotation, and rejects if it cannot Navigates the NPC to a specific position/orientation derived from X/Y coordinates on the player's screen with a set depth "},{"title":"PivotToWorldPosition","type":1,"pageTitle":"TutorialNPC","url":"/roblox-sparkles-docs/api/TutorialNPC#PivotToWorldPosition","content":"</> TutorialNPC:PivotToWorldPosition( targetCFrame: CFrame -- The target CFrame to pivot the NPC to ) → Promise<T>-- Returns a promise that resolves once the NPC reaches the desired target/depth/rotation Pivots the NPC to a world CFrame "},{"title":"PlayAnimation","type":1,"pageTitle":"TutorialNPC","url":"/roblox-sparkles-docs/api/TutorialNPC#PlayAnimation","content":"</> TutorialNPC:PlayAnimation( Animation: string?-- The name of the animation to play (Eg. "Walk", "Run", "Jump") - if no string provided, current animation will be stopped ) → () Plays an animation for the NPC "},{"title":"PlayEmotion","type":1,"pageTitle":"TutorialNPC","url":"/roblox-sparkles-docs/api/TutorialNPC#PlayEmotion","content":"This is a yielding function. When called, it will pause the Lua thread that called the function until a result is ready to be returned, without interrupting other scripts. Yields </> TutorialNPC:PlayEmotion( Emotion: string?-- The emotion to play - if no emotion is provided, the currently playing emotion is cancelled ) → () Plays an emotion to a customer NPC - function yields for as long as the emotion is playing "},{"title":"Destroy","type":1,"pageTitle":"TutorialNPC","url":"/roblox-sparkles-docs/api/TutorialNPC#Destroy","content":"</> TutorialNPC:Destroy() → () Destroys the NPC class "},{"title":"TemplateController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/TemplateController","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"TemplateController","url":"/roblox-sparkles-docs/api/TemplateController#properties","content":" "},{"title":"name","type":1,"pageTitle":"TemplateController","url":"/roblox-sparkles-docs/api/TemplateController#name","content":"</> TemplateController.name: DEFAULT_HIDDEN_POSITION Determines the hidden position of this UI This is calculated by adding this UDim2 to the ORIGIN UDim2 of the frame "},{"title":"name","type":1,"pageTitle":"TemplateController","url":"/roblox-sparkles-docs/api/TemplateController#name","content":"</> TemplateController.name: DEFAULT_HIDDEN_POSITION Determines the hidden position of this UI This is calculated by adding this UDim2 to the ORIGIN UDim2 of the frame "},{"title":"Functions","type":1,"pageTitle":"TemplateController","url":"/roblox-sparkles-docs/api/TemplateController#functions","content":" "},{"title":"GetStates","type":1,"pageTitle":"TemplateController","url":"/roblox-sparkles-docs/api/TemplateController#GetStates","content":"This item only works when running on the client. Client </> TemplateController:GetStates() → {isVisible: Fusion.StateObject<boolean>} This is a REQUIRED method for all screens It is responsible for returning the current states "},{"title":"Show","type":1,"pageTitle":"TemplateController","url":"/roblox-sparkles-docs/api/TemplateController#Show","content":"This item only works when running on the client. Client </> TemplateController:Show() → () This is a REQUIRED method for all screens It is responsible for showing this screenGui Example Usage: MainGuiController:ShowScreen("Template") will automatically call THIS function AND also CLOSE the other visible screens "},{"title":"Hide","type":1,"pageTitle":"TemplateController","url":"/roblox-sparkles-docs/api/TemplateController#Hide","content":"This item only works when running on the client. Client </> TemplateController:Hide() → () This is a REQUIRED method for all screens It is responsible for hiding this screenGui Example Usage: MainGuiController:HideScreen("Template") will automatically call THIS function AND also CLOSE the other visible screens "},{"title":"KnitInit","type":1,"pageTitle":"TemplateController","url":"/roblox-sparkles-docs/api/TemplateController#KnitInit","content":"This item only works when running on the client. Client </> TemplateController:KnitInit() → nil Initialize TemplateController "},{"title":"KnitStart","type":1,"pageTitle":"TemplateController","url":"/roblox-sparkles-docs/api/TemplateController#KnitStart","content":"This item only works when running on the client. Client </> TemplateController:KnitStart() → nil Start TemplateController "},{"title":"ShopScreenController","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/ShopScreenController","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#properties","content":" "},{"title":"SEARCH_RESULT_MINIMUM_RATIO","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#SEARCH_RESULT_MINIMUM_RATIO","content":"</> ShopScreenController.SEARCH_RESULT_MINIMUM_RATIO: number The similiarity ratio required for the fuzzy search function to accept a string. "},{"title":"NUM_OF_RECENTS","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#NUM_OF_RECENTS","content":"</> ShopScreenController.NUM_OF_RECENTS: number The amount of recent items shown to the player. "},{"title":"FEATURED_ITEMS","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#FEATURED_ITEMS","content":"</> ShopScreenController.FEATURED_ITEMS: table Holds the data for the desired static featured items in a key/pair table {[string]: string}. "},{"title":"name","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#name","content":"</> ShopScreenController.name: DEFAULT_HIDDEN_POSITION Determines the hidden position of this UI This is calculated by adding this UDim2 to the ORIGIN UDim2 of the frame "},{"title":"Functions","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#functions","content":" "},{"title":"FuzzySearch","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#FuzzySearch","content":"This item only works when running on the client. Client </> ShopScreenController.FuzzySearch( comparisonStrings: string,-- Array of strings to search and compare through. searchString: string-- A string that the player is searching for. ) → {searchResults: table} This is a modified vendor function from the DevForum. It handles fuzzy search, comparing a string to another string, and returning the closeness ratio. Returns in the format of { { Ratio, Word }, { Ratio, Word } }. A ratio of 1 means it completely matches and a ratio of 0 means nothing matches at all. "},{"title":"GetStates","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#GetStates","content":"This item only works when running on the client. Client </> ShopScreenController:GetStates() → {isVisible: Fusion.StateObject<boolean>} This is a REQUIRED method for all screens It is responsible for returning the current states "},{"title":"Show","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#Show","content":"This item only works when running on the client. Client </> ShopScreenController:Show() → nil This is a REQUIRED method for all screens It is responsible for showing this screenGui Example Usage: MainGuiController:ShowScreen("Template") will automatically call THIS function AND also CLOSE the other visible screens "},{"title":"HandleSearch","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#HandleSearch","content":"This item only works when running on the client. Client </> ShopScreenController:HandleSearch() → nil This function waits for the player to enter text in the search box, and shows the results accordingly. Furthermore, it creates a connection for the SearchButton on KnitInit. "},{"title":"UpdateBuyScreen","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#UpdateBuyScreen","content":"This item only works when running on the client. Client </> ShopScreenController:UpdateBuyScreen( purchaseAccess: boolean?-- If this is to purchase access or not. ) → nil This function is called each time before the buy screen is brought up. "},{"title":"BuildCategories","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#BuildCategories","content":"This item only works when running on the client. Client </> ShopScreenController:BuildCategories() → nil This function automatically puts items in category arrays based on their category type (derived from products array). "},{"title":"BuildFeatured","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#BuildFeatured","content":"This item only works when running on the client. Client </> ShopScreenController:BuildFeatured() → nil This function fills in the featured page with products and makes it interactive. "},{"title":"HandleBuyScreen","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#HandleBuyScreen","content":"This item only works when running on the client. Client </> ShopScreenController:HandleBuyScreen() → nil This function handles all behavior related to the buy screen. "},{"title":"AttemptPurchase","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#AttemptPurchase","content":"This item only works when running on the client. Client </> ShopScreenController:AttemptPurchase( itemData: Table-- A table formatted {item_name: string, item_data: ANY_TABLE} ) → nil This function is meant to be called externally to prompt the shop to allow players to buy something. "},{"title":"UpdateRecentHistory","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#UpdateRecentHistory","content":"This item only works when running on the client. Client </> ShopScreenController:UpdateRecentHistory() → nil This function updates the 'recents' tab for the shop. "},{"title":"HandleCategories","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#HandleCategories","content":"This item only works when running on the client. Client </> ShopScreenController:HandleCategories() → nil This function handles all the behavior relating to building categories and their UI. "},{"title":"Hide","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#Hide","content":"This item only works when running on the client. Client </> ShopScreenController:Hide() → () This is a REQUIRED method for all screens It is responsible for hiding this screenGui Example Usage: MainGuiController:HideScreen("Template") will automatically call THIS function AND also CLOSE the other visible screens "},{"title":"KnitInit","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#KnitInit","content":"This item only works when running on the client. Client </> ShopScreenController:KnitInit() → nil Initialize ShopScreenController "},{"title":"KnitStart","type":1,"pageTitle":"ShopScreenController","url":"/roblox-sparkles-docs/api/ShopScreenController#KnitStart","content":"This item only works when running on the client. Client </> ShopScreenController:KnitStart() → nil Start ShopScreenController "},{"title":"ShopFloor","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/ShopFloor","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#properties","content":" "},{"title":"GRID_UNIT","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#GRID_UNIT","content":"</> ShopFloor.GRID_UNIT: number Grid unit for snapping prop placement "},{"title":"MAX_UNOCCUPIED_BUILDING_HEIGHT","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#MAX_UNOCCUPIED_BUILDING_HEIGHT","content":"</> ShopFloor.MAX_UNOCCUPIED_BUILDING_HEIGHT: number? (Optional) How many floors high a building can be (Not including the apartment on top) if nobody owns that store plot. If no number is defined, will default to 1 "},{"title":"CFRAME_DECIMAL_PRECISION","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#CFRAME_DECIMAL_PRECISION","content":"</> ShopFloor.CFRAME_DECIMAL_PRECISION: number The decimal place to round saved CFrame position/rotation to when encoding to the datastore Eg. 1: .1 2: .01 3: .001 4: .0001 "},{"title":"Functions","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#functions","content":" "},{"title":"new","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#new","content":"</> ShopFloor.new( floorPart: BasePart ,-- The BasePart for the shop floor storeData: ANY_TABLE ) → table-- Returns the newly created ShopFloor class Create new ShopFloor "},{"title":"BuildShop","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#BuildShop","content":"</> ShopFloor:BuildShop( floorDesign: string?-- (Optional) The building design to load - if arg is not provided, the building will reset to the default design ) → boolean-- Returns true if the building design was successfully changed, and false if not Assembles a shop building "},{"title":"PlaceStarterProps","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#PlaceStarterProps","content":"</> ShopFloor:PlaceStarterProps() → () Places starter props down for new floor configurations "},{"title":"GetMatrix","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#GetMatrix","content":"</> ShopFloor:GetMatrix() → table-- table representing pathfinding matrix Get pathfinding matrix "},{"title":"GetMatrixCoordinate","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#GetMatrixCoordinate","content":"</> ShopFloor:GetMatrixCoordinate(position: Vector3 ) → number,number-- i, j representing matrix[i][j] Get matrix coordinates of a position relative to a ShopFloor part "},{"title":"MoveProp","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#MoveProp","content":"</> ShopFloor:MoveProp( replicaId: string,-- The replicaId of the prop targetCFrame: CFrame -- The target CFrame to place the prop at ) → boolean-- true if prop was successfully moved, false otherwise Move prop "},{"title":"PlaceProp","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#PlaceProp","content":"</> ShopFloor:PlaceProp( prop: string,-- The name of the prop to place down propId: string?,-- (Optional) The ID of an existing prop under StoreData.FloorConfiguration.Props targetCFrame: CFrame? -- The target CFrame to place the prop at. Required if creating a new prop for the first time, optional if propId argument is defined ) → Promise<T>-- Returns a promise that resolves if the prop was successfully added to the shop floor, and rejects if not Place prop "},{"title":"RemoveProp","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#RemoveProp","content":"</> ShopFloor:RemoveProp( prop: string-- The replica ID of the prop (string) ) → boolean-- true if prop was found and removed, false otherwise Remove prop "},{"title":"LookForProp","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#LookForProp","content":"</> ShopFloor:LookForProp( propName: string-- Name of prop to look for ) → table-- list of placed props with specified name Look for prop "},{"title":"GetShelves","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#GetShelves","content":"</> ShopFloor:GetShelves() → shelvestable-- array of bounding boxes of shelves Get bounding boxes of shelves "},{"title":"_reloadProps","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#_reloadProps","content":"</> ShopFloor:_reloadProps( FloorConfiguration: table-- The saved configuration of the floor to load (From the player's data) ) → () Erases all existing props placed down on the floor and reloads w/the provided FloorConfiguration table "},{"title":"SetOwner","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#SetOwner","content":"</> ShopFloor:SetOwner(owner: Player ) → nil Set owner of shop floor "},{"title":"Reset","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#Reset","content":"</> ShopFloor:Reset( doNotResetOwner: boolean?-- If true, the owner data is not reset for the floor ) → nil Wipe all props off shop floor and set OwnerId/owner to nil "},{"title":"GetProps","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#GetProps","content":"</> ShopFloor:GetProps() → table-- List of props that are on the shop floor Returns all props from the shop floor "},{"title":"Destroy","type":1,"pageTitle":"ShopFloor","url":"/roblox-sparkles-docs/api/ShopFloor#Destroy","content":"</> ShopFloor:Destroy() → nil Destroy shop floor "},{"title":"SpellFunctions","type":0,"sectionRef":"#","url":"/roblox-sparkles-docs/api/SpellFunctions","content":"","keywords":""},{"title":"Properties","type":1,"pageTitle":"SpellFunctions","url":"/roblox-sparkles-docs/api/SpellFunctions#properties","content":" "},{"title":"Spells","type":1,"pageTitle":"SpellFunctions","url":"/roblox-sparkles-docs/api/SpellFunctions#Spells","content":"</> SpellFunctions.Spells: table Key/pair table of spells and their associated settings Keys: _particle: (ParticleEmitter | Trail)? - the particle for the effect - can be a trail object if used for the Cast function (Only works for the cast function!) _time: number? - The time to wait after the spell is cast before resolving the function _sound: Sound? - The sound to play for this function _animation: Animation? - The animation to play for this function "},{"title":"SPELL_MOVEMENT_RADIUS","type":1,"pageTitle":"SpellFunctions","url":"/roblox-sparkles-docs/api/SpellFunctions#SPELL_MOVEMENT_RADIUS","content":"</> SpellFunctions.SPELL_MOVEMENT_RADIUS: number How many studs on the X/Y axis (Relative to the direction of the spell) that a spell can move (Based on sin/cos) "},{"title":"Functions","type":1,"pageTitle":"SpellFunctions","url":"/roblox-sparkles-docs/api/SpellFunctions#functions","content":" "},{"title":"new","type":1,"pageTitle":"SpellFunctions","url":"/roblox-sparkles-docs/api/SpellFunctions#new","content":"This item only works when running on the client. Client </> SpellFunctions.new( spellName: string-- The spell to cast ) → table?-- Returns a new 'spell' class with the associated casting functions Creates a new 'spell' object "},{"title":"ChargeSpell","type":1,"pageTitle":"SpellFunctions","url":"/roblox-sparkles-docs/api/SpellFunctions#ChargeSpell","content":"This item only works when running on the client. Client This is a yielding function. When called, it will pause the Lua thread that called the function until a result is ready to be returned, without interrupting other scripts. Yields </> SpellFunctions:ChargeSpell( particleParent: Attachment | BasePart -- The object (Attachment or BasePart) to parent the particle to ) → boolean-- Returns a boolean indicating whether the spell was succesfully cast or not Creates a spell particle/sfx/plays an animation with the character when the spell is being charged - yields for however long is defined under the spell data's _time key "},{"title":"CastSpell","type":1,"pageTitle":"SpellFunctions","url":"/roblox-sparkles-docs/api/SpellFunctions#CastSpell","content":"This item only works when running on the client. Client This is a yielding function. When called, it will pause the Lua thread that called the function until a result is ready to be returned, without interrupting other scripts. Yields </> SpellFunctions:CastSpell( spellOrigin: CFrame ,-- The origin of the spell spellTarget: CFrame -- The target CFrame of the spell ) → boolean-- Returns a boolean indicating whether the spell was successfully cast or not Casts the spell from an origin position and moves the particle attachment to the target position - yields until the particle reaches the desired point "},{"title":"ImpactSpell","type":1,"pageTitle":"SpellFunctions","url":"/roblox-sparkles-docs/api/SpellFunctions#ImpactSpell","content":"This item only works when running on the client. Client This is a yielding function. When called, it will pause the Lua thread that called the function until a result is ready to be returned, without interrupting other scripts. Yields </> SpellFunctions:ImpactSpell( spellTarget: CFrame -- The target CFrame of the spell (Where the particle should be positioned at) ) → boolean-- Returns a boolean indicating whether the spell was successfully cast or not Creates the impact effect of the spell (If applicable) - yields for however long _time is defined for under the spellData table "},{"title":"Destroy","type":1,"pageTitle":"SpellFunctions","url":"/roblox-sparkles-docs/api/SpellFunctions#Destroy","content":"This item only works when running on the client. Client </> SpellFunctions:Destroy( doNotCleanup: boolean?-- If false/nil, everything under the spell class is cleaned up ) → () Destroys the spell class "}]