New Material - configurable?

When you add a new material, it defaults to Principled.

Is this configurable (i.e. can I change it back to the old method whereby it adds a diffuse node by default?)

I don’t think you can change the default behavior, but without using the nodes you can quickly switch to diffuse from the Surface field in the Material Properties.

Not sure,but if its using python,like add new cube ect commands,then you could make your own
" add new material " python script addon,and add maybe a toggle for it in the menu.

Based on the Videotutorial,i tryed to make a script.Here the simplified version of the new diffuse material. (517 Bytes)

Here’s the basic script that I have…
(my default adds some other stuff, but is easy to create new default materials)

bl_info = {
    "name": "Custom New Material",
    "author": "Secrop",
    "version": (1, 0),
    "blender": (2, 91, 0),
    "location": "New Material",
    "description": "Replaces the default material",
    "warning": "",
    "doc_url": "",
    "category": "Material",

import bpy
from bpy.types import Operator
from bpy import utils

# Default Materials
def material_output_default(nodetree):
    n = nodetree.nodes
    n.remove(n['Principled BSDF'])

# Material creation and assignment
def new_material(context, nodefunction):
    m ="Material")
    m.use_nodes = True

    o = context.active_object
    if len(o.material_slots)==0:
    s = o.material_slots[o.active_material_index]
    s.material = m        

# Operator
class CustomNewMaterialOperator(bpy.types.Operator):
    bl_idname = ""
    bl_label = "Custom New Material"

    def poll(cls, context):
        res = False
        obj = context.active_object
        if (obj is not None):
            if (obj.type == 'MESH'):
                res = True
        return res

    def execute(self, context):
        # using 'material_output_default' as the default material
        new_material(context, material_output_default)

        return {'FINISHED'}

# System
def register():

def unregister():

if __name__ == "__main__":

cheers - i’ll try that