MaterialService
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.
Summary
Properties
Specify MaterialVariant name to override built-in Asphalt.
Specify MaterialVariant name to override built-in Basalt.
Specify MaterialVariant name to override built-in Brick.
Specify MaterialVariant name to override built-in Cobblestone.
Specify MaterialVariant name to override built-in Concrete.
Specify MaterialVariant name to override built-in CorrodedMetal.
Specify MaterialVariant name to override built-in CrackedLava.
Specify MaterialVariant name to override built-in DiamondPlate.
Specify MaterialVariant name to override built-in Fabric.
Specify MaterialVariant name to override built-in Foil.
Specify MaterialVariant name to override built-in Glacier.
Specify MaterialVariant name to override built-in Granite.
Specify MaterialVariant name to override built-in Grass.
Specify MaterialVariant name to override built-in Ground.
Specify MaterialVariant name to override built-in Ice.
Specify MaterialVariant name to override built-in LeafyGrass.
Specify MaterialVariant name to override built-in Limestone.
Specify MaterialVariant name to override built-in Marble.
Specify MaterialVariant name to override built-in Metal.
Specify MaterialVariant name to override built-in Mud.
Specify MaterialVariant name to override built-in Pavement.
Specify MaterialVariant name to override built-in Pebble.
Specify MaterialVariant name to override built-in Plastic.
Specify MaterialVariant name to override built-in Rock.
Specify MaterialVariant name to override built-in Salt.
Specify MaterialVariant name to override built-in Sand.
Specify MaterialVariant name to override built-in Sandstone.
Specify MaterialVariant name to override built-in Slate.
Specify MaterialVariant name to override built-in SmoothPlastic.
Specify MaterialVariant name to override built-in Snow.
Switch built-in material pack.
Specify MaterialVariant name to override built-in Wood.
Specify MaterialVariant name to override built-in WoodPlanks.
Methods
Get the override MaterialVariant name of specified Material type.
Get the effective MaterialVariant reference given a name and Material.
Set a MaterialVariant name that overrides a built-in material.
Properties
AsphaltName
Specify MaterialVariant name to override built-in Asphalt. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Asphalt.
BasaltName
Specify MaterialVariant name to override built-in Basalt. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Basalt.
BrickName
Specify MaterialVariant name to override built-in Brick. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Brick.
CardboardName
CarpetName
CeramicTilesName
ClayRoofTilesName
CobblestoneName
Specify MaterialVariant name to override built-in Cobblestone. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Cobblestone.
ConcreteName
Specify MaterialVariant name to override built-in Concrete. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Concrete.
CorrodedMetalName
Specify MaterialVariant name to override built-in CorrodedMetal. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to CorrodedMetal.
CrackedLavaName
Specify MaterialVariant name to override built-in CrackedLava. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to CrackedLava.
DiamondPlateName
Specify MaterialVariant name to override built-in DiamondPlate. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to DiamondPlate.
FabricName
Specify MaterialVariant name to override built-in Fabric. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Fabric.
FoilName
Specify MaterialVariant name to override built-in Foil. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Foil.
GlacierName
Specify MaterialVariant name to override built-in Glacier. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Glacier.
GraniteName
Specify MaterialVariant name to override built-in Granite. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Granite.
GrassName
Specify MaterialVariant name to override built-in Grass. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Grass.
GroundName
Specify MaterialVariant name to override built-in Ground. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Ground.
IceName
Specify MaterialVariant name to override built-in Ice. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Ice.
LeafyGrassName
Specify MaterialVariant name to override built-in LeafyGrass. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to LeafyGrass.
LeatherName
LimestoneName
Specify MaterialVariant name to override built-in Limestone. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Limestone.
MarbleName
Specify MaterialVariant name to override built-in Marble. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Marble.
MetalName
Specify MaterialVariant name to override built-in Metal. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Metal.
MudName
Specify MaterialVariant name to override built-in Mud. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Mud.
PavementName
Specify MaterialVariant name to override built-in Pavement. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Pavement.
PebbleName
Specify MaterialVariant name to override built-in Pebble. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Pebble.
PlasterName
PlasticName
Specify MaterialVariant name to override built-in Plastic. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Plastic.
RockName
Specify MaterialVariant name to override built-in Rock. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Rock.
RoofShinglesName
RubberName
SaltName
Specify MaterialVariant name to override built-in Salt. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Salt.
SandName
Specify MaterialVariant name to override built-in Sand. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Sand.
SandstoneName
Specify MaterialVariant name to override built-in Sandstone. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Sandstone.
SlateName
Specify MaterialVariant name to override built-in Slate. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Slate.
SmoothPlasticName
Specify MaterialVariant name to override built-in SmoothPlastic. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to SmoothPlastic.
SnowName
Specify MaterialVariant name to override built-in Snow. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Snow.
Use2022Materials
When it's false, built-in materials use the material pack before 2022. When it's true, built-in materials use the material pack released in 2022.
WoodName
Specify MaterialVariant name to override built-in Wood. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to Wood.
WoodPlanksName
Specify MaterialVariant name to override built-in WoodPlanks. The Specified MaterialVariant must have MaterialVariant.BaseMaterial set to WoodPlanks.
Methods
GetBaseMaterialOverride
Get the override MaterialVariant name of specified Material type.
Parameters
Material type to be fetched.
Returns
MaterialVariant name currently set as override.
GetMaterialVariant
Get the effective MaterialVariant reference given a MaterialVariant name and BaseMaterial. This MaterialVariant must be a descendant of MaterialService. Returns nil if no matching instance exists.
Parameters
BaseMaterial of MaterialVariant.
Name of MaterialVariant.
Returns
A MaterialVariant instance that matches parameters.
SetBaseMaterialOverride
Set a MaterialVariant name that overrides a built-in material.
Parameters
The Material type to be changed.
Name of the MaterialVariant object.