diff --git a/indra/newview/llagentwearables.cpp b/indra/newview/llagentwearables.cpp
index 170e4063a1524b22d1eb62d69490194db116526b..15e4de8f6909f4e64d4c61043a595594f9a64d5a 100644
--- a/indra/newview/llagentwearables.cpp
+++ b/indra/newview/llagentwearables.cpp
@@ -1538,6 +1538,12 @@ void LLAgentWearables::createWearable(LLWearableType::EType type, bool wear, con
 {
 	if (type == LLWearableType::WT_INVALID || type == LLWearableType::WT_NONE) return;
 
+	if (type == LLWearableType::WT_UNIVERSAL && !gAgent.getRegion()->bakesOnMeshEnabled())
+	{
+		LL_WARNS("Inventory") << "Can't create WT_UNIVERSAL type " << LL_ENDL;
+		return;
+	}
+
 	LLViewerWearable* wearable = LLWearableList::instance().createNewWearable(type, gAgentAvatarp);
 	LLAssetType::EType asset_type = wearable->getAssetType();
 	LLInventoryType::EType inv_type = LLInventoryType::IT_WEARABLE;
diff --git a/indra/newview/llviewerregion.cpp b/indra/newview/llviewerregion.cpp
index feaafad2e12810c1814ac07fc8646fbba2fb42c0..98320247e004bb47806a76c460914118a5283555 100644
--- a/indra/newview/llviewerregion.cpp
+++ b/indra/newview/llviewerregion.cpp
@@ -3174,6 +3174,12 @@ bool LLViewerRegion::meshUploadEnabled() const
 		mSimulatorFeatures["MeshUploadEnabled"].asBoolean());
 }
 
+bool LLViewerRegion::bakesOnMeshEnabled() const
+{
+	return (mSimulatorFeatures.has("BakesOnMeshEnabled") &&
+		mSimulatorFeatures["BakesOnMeshEnabled"].asBoolean());
+}
+
 bool LLViewerRegion::meshRezEnabled() const
 {
 	return (mSimulatorFeatures.has("MeshRezEnabled") &&
diff --git a/indra/newview/llviewerregion.h b/indra/newview/llviewerregion.h
index 302647215f7791935e9ebe3ea37c42795ef50efb..9405b028182d62ba55d44831e6fa3c4ac84fca0c 100644
--- a/indra/newview/llviewerregion.h
+++ b/indra/newview/llviewerregion.h
@@ -304,6 +304,8 @@ class LLViewerRegion: public LLCapabilityProvider // implements this interface
 	bool meshRezEnabled() const;
 	bool meshUploadEnabled() const;
 
+	bool bakesOnMeshEnabled() const;
+
 	// has region received its simulator features list? Requires an additional query after caps received.
 	void setSimulatorFeaturesReceived(bool);
 	bool simulatorFeaturesReceived() const;