PaperMC / PaperMC/Paper

DataComponents for BannerBlockEntity/SkullBlockEntity (BANNER_PATTERNS, PROFILE) do not sync or render for blocks placed programmatically. Paper 1.21.8-60

Open
#13,280 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

status: needs triage version: 1.21.8
Dominant language
Java
Stars
12.7k
Forks
3.5k
Avg merge
3d 13h
Merged PRs (30d)
11

Description

Expected behavior
DataComponents for BannerBlockEntity/SkullBlockEntity (BANNER_PATTERNS, PROFILE) do not sync or render for blocks placed programmatically

Minecraft version: Purpur/Paper 1.21.8

Problem:
When placing banners and player heads via plugin code, I set DataComponents directly (e.g. BANNER_PATTERNS via BannerBlockEntity.setComponents, PROFILE via SkullBlockEntity.setComponents).
After calling setComponents, setChanged, setBlockEntity, and sendBlockUpdated, the block in the world does not visually update, and I checked the banner and head data through auxiliary client mods, they are empty.

Observed/Actual behavior

Actual:
Banner/head appear blank/vanilla, components.banner_patterns/components.profile missing, no visual changes.

Is this a known DataComponents sync/render bug with Paper/Purpur 1.21.8? Is there a workaround to force block update with DataComponents for banners and heads?

Steps/models to reproduce

Tested:

  • Verified banner components after placement: banner.components() contains the correct BannerPatternLayers, but not visible in world nor /data get block

Expected:
Block visual state should reflect the DataComponent (patterns/skin), and /data get block (or equivalent) exposes the DataComponent for tile entities after placement, especially after updatePacket/broadcast.

Code sample:

blockEntity.setComponents(newComponents)
blockEntity.setChanged()
world.setBlockEntity(blockEntity)
world.sendBlockUpdated(pos, state, state, 3)
Plugin and Datapack List

ℹ Server Plugins (13):
Bukkit Plugins:

  • HeadDatabase, LuckPerms, MYTHSetup, PlaceholderAPI, ProtocolLib, Vault, ViaBackwards, ViaVersion, zChat, zEssentials
    ZETRIUM, zLibs, zWorldEdit

Non-homemade plugins: HeadDatabase, LuckPerms, PlaceholderAPI, ProtocolLib, Vault, ViaBackwards, ViaVersion

Paper version

This server is running Paper version 1.21.8-60-main@29c8822 (2025-09-06T21:49:13Z) (Implementing API version 1.21.8-R0.1-SNAPSHOT)
You are running the latest version
Previous version: 1.21.8-2487-3850f35 (MC: 1.21.8)

Other

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the issue with BannerBlockEntity.setComponents or SkullBlockEntity.setComponents, followed by setChanged, setBlockEntity, and sendBlockUpdated, and inspect the result in the world and with /data get block. Trace how BANNER_PATTERNS and PROFILE are serialized, synchronized, and rendered; done means programmatically placed banners and heads visibly update and expose their components after placement.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.