- Java 100%
The pack now gets rewritten if it's missing on startup, geyser reload and /curator reload. Swapped GeyserPostReloadEvent for GeyserDefineResourcePacksEvent since that one fires reliably. Curator also logs the full path when it writes the pack, and a failed write won't break startup anymore. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
|---|---|---|
| gradle/wrapper | ||
| src | ||
| .gitattributes | ||
| .gitignore | ||
| build.gradle.kts | ||
| gradlew | ||
| gradlew.bat | ||
| README.md | ||
| settings.gradle.kts | ||
Curator
A Geyser extension that shows Java item displays and block displays to Bedrock players.
This is Chunkbound's own rewritten fork of GeyserDisplayEntity. The main difference is control. You can line up how a display looks and which way it faces per item, and stop guessing.
What's different from the original
- Each mapping can set its own offset and rotation. Chest slot items get moved and turned with them too. The original mostly ignored that for chest items.
match-translationandmatch-scalelet one item type have different mappings depending on how the display is posed.- The resource pack comes inside the jar. Curator writes it out for you, you just drop it in Geyser's
packsfolder. - A reload that fails keeps the old config running, so a typo doesn't break every display.
- Broken mapping entries get skipped with a warning instead of crashing.
- Less config overall. You don't touch entity property files anymore.
Which jar
There's one jar per Minecraft version. Pick the one that matches your Geyser.
| Jar | Java version | Geyser |
|---|---|---|
Curator-<version>-mc26.1.jar |
26.1 | 2.10.0, 2.10.1 |
Curator-<version>-mc26.2.jar |
26.2 | 2.11.0 to 2.11.3 |
Curator-<version>-mc26.3.jar |
26.3 | 2.12.0 |
Platform doesn't matter. Spigot, Paper, Velocity, BungeeCord, Fabric, NeoForge, Standalone and ViaProxy all use the same jar, because Geyser loads extensions the same way everywhere.
Wrong jar? Curator says so in the console and tells you which one it is.
Install
- Put the right jar in Geyser's
extensionsfolder. - Restart. Curator makes
extensions/curator/CuratorPack.mcpack. - Copy
CuratorPack.mcpackinto Geyser'spacksfolder. - Restart again so Geyser picks up the pack.
The resource pack
Bedrock needs a resource pack to draw displays. Curator doesn't send it for you. You add it to Geyser yourself:
- Curator writes
CuratorPack.mcpackinto its own folder (extensions/curator/) on startup,geyser reloadand/curator reload, but only if it's missing. It logs the full path when it does. - Copy it into Geyser's
packsfolder and restart. Geyser sends it to Bedrock players when they join.
Things worth knowing:
- Curator never overwrites the file. After updating Curator, delete the old
CuratorPack.mcpack, run/curator reloadto get the new one, and copy it intopacksagain. - You can edit the pack. Just edit the copy in Geyser's
packsfolder. - If you still have the old GeyserDisplayEntity pack installed, remove it. Both use the same entity ids and they'll fight.
Updating from 1.x
Curator 1.x sent the pack by itself. 2.0.0 doesn't, so if you skip copying it into packs, Bedrock players won't see displays right. The send-pack option is gone too. If it's still in your config.yml it's just ignored.
Config
config.ymlholds the defaults and decides what gets hidden. Each setting has a comment.mappings/holds per-item settings. Look atexample.yml, it has every option in it.
/curator reload reloads both, and puts the pack back if it's missing. Permission: curator.reload.
entity-height needs a full restart. Reload doesn't pick it up.
Mapping files from GeyserDisplayEntity
They mostly just work. Copy them into mappings/. The old displayentityoptions: and options: blocks still get read, but display: is the new name.
Don't copy the old config.yml. The layout changed, so start from the new one.
Building
./gradlew build
You need Java 21. All three jars end up in build/libs/.
How the source is laid out:
src/sharedis used by every jar. Almost everything is in here.src/mc26_1,src/mc26_2,src/mc26_3only hold the bits that change between Geyser versions. That's how entities get registered and one renamed field.
To build against a specific Geyser build: ./gradlew build -Pgeyser.mc26_2=2.11.0-SNAPSHOT
Credits
Forked from GeyserDisplayEntity by zimzaza4 and xSquishyLiam. That was based on Kastle's display entity branch of Geyser. The resource pack started as theirs too.