Skip to content

MaterialService

Not yet Class Services NotCreatable Service

The game service responsible for managing materials.

Not implemented yet

This class exists in the current Roblox API but is not implemented in Nova yet. Scripts that reference it will fail at runtime.

0 Nova members · 17 modern Roblox members not implemented yet

Description

MaterialService is the game service responsible for managing materials. It is the container for global MaterialVariant instances. MaterialVariant can be child or descendant of MaterialService. For each base Material type, MaterialService internally keeps a set of MaterialVariant references. MaterialVariant.Name is the key to access it. The MaterialVariant.Name and MaterialVariant.BaseMaterial are combined to work as an identifier. If more than one MaterialVariant object has the same name and BaseMaterial under MaterialService, only one of them can be used.

MaterialService has some (Material)Name properties. Assigning a MaterialVariant Name replaces the built-in material with the specified MaterialVariant. If the MaterialService can't find a matching MaterialVariant, it falls back to built-in material. Note BaseMaterial should also match, for example, a MaterialVariant with BaseMaterial Grass can only be assigned to MaterialService.GrassName, not AsphaltName or any other names. These properties are not scriptable but can read and write using MaterialService.GetBaseMaterialOverride() and MaterialService.SetBaseMaterialOverride() function.

MaterialService has a MaterialService.Use2022Materials property that switches between legacy materials and new materials introduced in year 2022. Because legacy and user-generated (new) terrain materials use different encoding, using legacy terrain materials and MaterialVariant at the same time has a performance penalty. If your game is using pre-2022 terrain materials, avoid overriding any built-in materials. Migrate to 2022 materials if possible.

Inheritance

Object → Instance → MaterialService

Properties

Member Signature Summary
AsphaltName AsphaltName: string Specify MaterialVariant name to override built-in Asphalt.
BasaltName BasaltName: string Specify MaterialVariant name to override built-in Basalt.
BrickName BrickName: string Specify MaterialVariant name to override built-in Brick.
CardboardName CardboardName: string Specify MaterialVariant name to override built-in Cardboard.
CarpetName CarpetName: string Specify MaterialVariant name to override built-in Carpet.
CeramicTilesName CeramicTilesName: string Specify MaterialVariant name to override built-in CeramicTiles.
ClayRoofTilesName ClayRoofTilesName: string Specify MaterialVariant name to override built-in ClayRoofTiles.
CobblestoneName CobblestoneName: string Specify MaterialVariant name to override built-in Cobblestone.
ConcreteName ConcreteName: string Specify MaterialVariant name to override built-in Concrete.
CorrodedMetalName CorrodedMetalName: string Specify MaterialVariant name to override built-in CorrodedMetal.
CrackedLavaName CrackedLavaName: string Specify MaterialVariant name to override built-in CrackedLava.
DiamondPlateName DiamondPlateName: string Specify MaterialVariant name to override built-in DiamondPlate.
FabricName FabricName: string Specify MaterialVariant name to override built-in Fabric.
FoilName FoilName: string Specify MaterialVariant name to override built-in Foil.
GlacierName GlacierName: string Specify MaterialVariant name to override built-in Glacier.
GraniteName GraniteName: string Specify MaterialVariant name to override built-in Granite.
GrassName GrassName: string Specify MaterialVariant name to override built-in Grass.
GroundName GroundName: string Specify MaterialVariant name to override built-in Ground.
IceName IceName: string Specify MaterialVariant name to override built-in Ice.
LeafyGrassName LeafyGrassName: string Specify MaterialVariant name to override built-in LeafyGrass.
LeatherName LeatherName: string Specify MaterialVariant name to override built-in Leather.
LimestoneName LimestoneName: string Specify MaterialVariant name to override built-in Limestone.
MarbleName MarbleName: string Specify MaterialVariant name to override built-in Marble.
MetalName MetalName: string Specify MaterialVariant name to override built-in Metal.
MudName MudName: string Specify MaterialVariant name to override built-in Mud.
PavementName PavementName: string Specify MaterialVariant name to override built-in Pavement.
PebbleName PebbleName: string Specify MaterialVariant name to override built-in Pebble.
PlasterName PlasterName: string Specify MaterialVariant name to override built-in Plaster.
PlasticName PlasticName: string Specify MaterialVariant name to override built-in Plastic.
RockName RockName: string Specify MaterialVariant name to override built-in Rock.
RoofShinglesName RoofShinglesName: string Specify MaterialVariant name to override built-in RoofShingles.
RubberName RubberName: string Specify MaterialVariant name to override built-in Rubber.
SaltName SaltName: string Specify MaterialVariant name to override built-in Salt.
SandName SandName: string Specify MaterialVariant name to override built-in Sand.
SandstoneName SandstoneName: string Specify MaterialVariant name to override built-in Sandstone.
SlateName SlateName: string Specify MaterialVariant name to override built-in Slate.
SmoothPlasticName SmoothPlasticName: string Specify MaterialVariant name to override built-in SmoothPlastic.
SnowName SnowName: string Specify MaterialVariant name to override built-in Snow.
Use2022Materials Use2022Materials: bool Switch built-in material pack.
Use2022MaterialsXml Use2022MaterialsXml: bool —
WoodName WoodName: string Specify MaterialVariant name to override built-in Wood.
WoodPlanksName WoodPlanksName: string Specify MaterialVariant name to override built-in WoodPlanks.

Methods

Member Signature Summary
GetBaseMaterialOverride MaterialService:GetBaseMaterialOverride(material: Material): string Get the override MaterialVariant name of specified Material type.
GetIsMaterialActionAsToolEnabled MaterialService:GetIsMaterialActionAsToolEnabled(): bool —
GetMaterialOverrideChanged MaterialService:GetMaterialOverrideChanged(material: Material): RBXScriptSignal —
GetMaterialVariant MaterialService:GetMaterialVariant(material: Material, name: string): MaterialVariant Get the effective MaterialVariant reference given a name and Material.
GetOverrideStatus MaterialService:GetOverrideStatus(material: Material): PropertyStatus —
SetBaseMaterialOverride MaterialService:SetBaseMaterialOverride(material: Material, name: string): null Set a MaterialVariant name that overrides a built-in material.
SetCurrentMaterial MaterialService:SetCurrentMaterial(baseMaterial: Material, materialVariant: string): null —
ToggleMaterialFillToolEnabled MaterialService:ToggleMaterialFillToolEnabled(): null —

Events

Member Signature Summary
MaterialFillToolEnabledChanged MaterialFillToolEnabledChanged(shouldEnable: bool) —
OverrideStatusChanged OverrideStatusChanged(material: Material) —

Roblox reference: MaterialService

Generated from Nova's API dump and Roblox creator-docs. Nova-only members come from the engine's reflection metadata.