Wiki 9Minecraft Wiki 9Minecraft

Vanilla Materials Reference

Built-in shader materials for custom entities, blocks, attachables, and particles in Bedrock resource packs.

4Sections
3Code examples
4Known errors

Materials control how the RenderDragon engine draws surfaces, handling transparency, backface culling, depth testing, and emissive glow. Instead of writing custom shaders—which are not supported in standard resource packs—creators assign built-in vanilla material identifiers to their entities, blocks, and particles. You reach for this reference whenever a texture needs cutout alpha, translucent blending, or glow-in-the-dark pixels.

How Materials Work in RenderDragon

Every rendered object in Minecraft Bedrock uses a material definition to tell the graphics pipeline how to process its textures and geometry. Since the introduction of the RenderDragon engine, custom `.material` files inside resource packs are largely restricted or ignored for shader definitions, making the built-in vanilla material list the primary tool for controlling visual surface properties.

You do not need to define these materials yourself; they already exist in the base game files. You simply reference their string identifiers inside your client entity definitions, attachable definitions, particle files, or inside the `minecraft:material_instances` component of a behavior pack block. Choosing the wrong material is the most common reason custom textures appear pitch black, turn invisible from behind, or fail to render semi-transparent pixels.

Entity and Attachable Materials

Entity materials are declared inside the `description.materials` object of a client entity or attachable file, where you map a short alias (often `default`) to a vanilla material identifier. That alias is then invoked by a render controller. If your texture is completely solid with no transparent gaps, `entity` is the cheapest and safest option.

When your texture uses transparent pixels, you must choose between alpha testing (1-bit cutout, where pixels are either 100% opaque or 100% invisible) and alpha blending (smooth translucency like stained glass). Alpha testing via `entity_alphatest` is strongly preferred for hair, clothes, and foliage because it writes properly to the depth buffer. Alpha blending via `entity_alphablend` should be saved for ghosts, visors, or energy shields, as overlapping translucent bones often flicker or sort in the wrong order.

Material IdentifierWhat it doesNotes
entityRenders a completely opaque surface with standard backface culling.Transparent pixels on the PNG will render as solid black or white.
entity_alphatestDiscards pixels below an alpha threshold, rendering sharp cutout edges.Standard choice for 90% of custom mobs and 3D armor.
entity_nocullOpaque rendering, but draws both the front and back faces of flat planes.Does not support transparency despite the name; use entity_alphatest for flat 2D planes with cutouts.
entity_alphablendEnables partial transparency (0% to 100% opacity) across the texture.Prone to Z-fighting and depth sorting glitches when bones overlap.
entity_emissiveIgnores world lighting based on the alpha channel of the texture.Opaque surface; pixels with an alpha value below 255 glow in the dark, while 255 alpha receives normal lighting.
entity_emissive_alphaCombines cutout transparency with emissive glow.Alpha 0 is fully invisible; partial alpha values (1–254) glow in the dark; alpha 255 renders normally without glowing.
entity_multitextureBlends multiple texture layers together inside a single render controller.Used on mobs like horses or villagers that layer markings and clothing.
spiderSpecialized emissive material originally built for spider eyes.Usually paired with a secondary eye texture in a separate render controller.
charged_creeperAdditive blending material designed for scrolling UV energy overlays.Black pixels become transparent; bright pixels add light to the underlying model.
RP/entity/crystal_golem.entity.json
{
  "format_version": "1.10.0",
  "minecraft:client_entity": {
    "description": {
      "identifier": "wiki:crystal_golem",
      "materials": {
        "default": "entity_alphatest",
        "glow_layer": "entity_emissive_alpha",
        "core_glass": "entity_alphablend"
      },
      "textures": {
        "default": "textures/entity/crystal_golem"
      },
      "geometry": {
        "default": "geometry.crystal_golem"
      },
      "render_controllers": [
        "controller.render.crystal_golem"
      ]
    }
  }
}

Block Render Methods

Custom blocks do not reference entity materials. Instead, they declare a `render_method` inside the `minecraft:material_instances` component in the behavior pack block file. Although the JSON key is named `render_method`, it maps directly to the engine's internal terrain materials.

Each face or material instance on your block can specify its own `render_method`, along with boolean flags like `face_dimming` and `ambient_occlusion`. Keep in mind that `blend` (translucent) blocks are much heavier on performance in large quantities than `alpha_test` blocks.

Render MethodWhat it doesNotes
opaqueDraws a solid block surface with no transparency.Default if omitted. Best performance for full cubes.
alpha_testEnables sharp cutout transparency and disables backface culling by default.Use for custom crops, grates, chains, and foliage.
alpha_test_single_sidedCutout transparency that culls (hides) the back faces of geometry planes.Useful for hollow models with cutout windows where you only want the outside visible.
blendEnables smooth partial transparency like stained glass, ice, or water.Faces behind a blend surface may disappear if they share the same material and touch.
double_sidedOpaque rendering that draws both sides of zero-thickness planes.No transparency support.
BP/blocks/amber_lantern.json
{
  "format_version": "1.20.80",
  "minecraft:block": {
    "description": {
      "identifier": "wiki:amber_lantern"
    },
    "components": {
      "minecraft:geometry": "geometry.amber_lantern",
      "minecraft:material_instances": {
        "*": {
          "texture": "amber_frame",
          "render_method": "alpha_test"
        },
        "glass_pane": {
          "texture": "amber_glass",
          "render_method": "blend",
          "ambient_occlusion": false,
          "face_dimming": false
        }
      }
    }
  }
}

Particle Materials

Particles assign a single material string under `basic_render_parameters.material` in their resource pack JSON. Because particles are flat billboards that constantly rotate toward the camera, they always render single-sided and rely heavily on alpha channels to shape the sprite.

If you want a particle to glow at night without emitting real block light, you do not use an emissive alpha channel trick like entities do. Instead, you simply omit the `minecraft:particle_appearance_lighting` component from the particle file; without that component, the particle renders at full brightness automatically.

Particle MaterialWhat it doesNotes
particles_opaqueDraws the particle square with zero transparency.Any transparent border in your PNG turns black.
particles_alphaCutout transparency based on an alpha threshold.Standard material for crisp pixel-art particles like vanilla smoke and potion swirls.
particles_blendSmooth semi-transparency across the sprite.Required when using `minecraft:particle_appearance_tinting` to fade alpha out over time.
particles_addAdditive color blending against the background.Great for fire, lasers, and magic sparks; dark colors become invisible and bright colors glow intensely.
RP/particles/ember_spark.particle.json
{
  "format_version": "1.10.0",
  "particle_effect": {
    "description": {
      "identifier": "wiki:ember_spark",
      "basic_render_parameters": {
        "material": "particles_alpha",
        "texture": "textures/particle/ember_spark"
      }
    },
    "components": {
      "minecraft:particle_initialization": {
        "per_render_expression": "variable.size = 0.15;"
      },
      "minecraft:emitter_rate_instant": {
        "num_particles": 10
      },
      "minecraft:emitter_lifetime_once": {
        "active_time": 1.0
      },
      "minecraft:emitter_shape_point": {},
      "minecraft:particle_lifetime_expression": {
        "max_lifetime": 1.5
      },
      "minecraft:particle_appearance_billboard": {
        "size": [ "variable.size", "variable.size" ],
        "facing_camera_mode": "rotate_xyz"
      }
    }
  }
}

Which versions this applies to

Applies to all modern Bedrock versions (1.16.100+ and 1.20.x) running the RenderDragon engine. No experimental toggles are required to use vanilla materials or block `minecraft:material_instances`.

When it does not work

What you seeWhyThe fix
Transparent areas on a custom entity or armor piece show up as solid black or white in-game.The entity or attachable is using the `entity` material, or your image editor discarded RGB data on 0-alpha pixels when saving.Change the material in `description.materials` from `entity` to `entity_alphatest`.
The entire entity glows in the dark when using `entity_emissive_alpha`, or the glowing parts turn completely invisible.`entity_emissive_alpha` uses the PNG alpha channel for two jobs at once: 0% opacity is invisible, 1%–99% opacity glows in the dark, and 100% opacity (alpha 255) renders as normal non-glowing geometry.Set non-glowing pixels to 100% opacity (255), glowing pixels to around 90% opacity (230) in your image editor, and cutout background pixels to 0% opacity.
Particle fading via `minecraft:particle_appearance_tinting` snaps out of existence suddenly instead of fading smoothly.The particle is using `particles_alpha`, which only understands binary cutout transparency and ignores smooth alpha gradients.Change `basic_render_parameters.material` to `particles_blend` in the particle JSON.
Content Log Error: `[Blocks][error]-block_name | minecraft:material_instances - render_method 'entity_alphatest' is not valid`.You used an entity material identifier inside a behavior pack block file.Replace `entity_alphatest` with `alpha_test` inside the block's `minecraft:material_instances` component.

Reference, straight from the game files

Read out of the game itself, so the ids match the version you are building for.