DataComponents for BannerBlockEntity/SkullBlockEntity (BANNER_PATTERNS, PROFILE) do not sync or render for blocks placed programmatically. Paper 1.21.8-60
Nobody has claimed this yet.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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