fix(lobby): ship real portal textures; they pointed at vanilla paths
Deploy Addons / deploy (push) Failing after 0s

The four portal blocks referenced vanilla texture paths from their own pack
(emerald_block, amethyst_block, prismarine_bricks, end_portal_frame_top)
without shipping those files. While the blocks rendered through the legacy
blocks.json path this was invisible; once minecraft:geometry made
material_instances take effect the lookup failed outright and they rendered
as missing-texture.

Ships real 16x16 textures generated through scripts/build-textures.py: a dark
stone frame around a glowing field, one hue per destination -- jamie green,
lyla purple, mya teal, plus a gold-ringed frame. terrain_texture.json now
points at these instead of vanilla paths, so every key in the pack resolves
to a file the pack actually contains.

lobby_transfer_RP bumped to 1.0.1 so clients re-download rather than serving
cached art; the lobby world pin was updated to match.

Known issue, not fixed here: lobby_transfer_RP and hub_return_transfer_BP
share pack UUID b2c3d4e5-1111-2222-3333-fedcba654321. They never load on the
same server today, so the collision is latent, but it makes version bumps on
either pack risky and should be resolved with a fresh UUID plus a pin update.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015Gf1kZypRDfPL1YiWUS1LC
This commit is contained in:
sysadmin
2026-08-28 12:49:46 +01:00
co-authored by Claude Opus 5
parent 57c06dde06
commit 50af20981f
11 changed files with 75 additions and 7 deletions
Binary file not shown.

Before

Width:  |  Height:  |  Size: 427 B

After

Width:  |  Height:  |  Size: 381 B

+15 -3
View File
@@ -4,14 +4,26 @@
"name": "Lobby Portal Transfer Resources",
"description": "Textures and lang for craftable portal blocks",
"uuid": "b2c3d4e5-1111-2222-3333-fedcba654321",
"version": [1, 0, 0],
"min_engine_version": [1, 21, 0]
"version": [
1,
0,
1
],
"min_engine_version": [
1,
21,
0
]
},
"modules": [
{
"type": "resources",
"uuid": "b2c3d4e5-4444-5555-6666-fedcba987654",
"version": [1, 0, 0]
"version": [
1,
0,
1
]
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 194 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 216 B

@@ -5,16 +5,16 @@
"num_mip_levels": 4,
"texture_data": {
"portal_frame": {
"textures": "textures/blocks/end_portal_frame_top"
"textures": "textures/blocks/portal_frame"
},
"portal_jamie": {
"textures": "textures/blocks/emerald_block"
"textures": "textures/blocks/portal_jamie"
},
"portal_lyla": {
"textures": "textures/blocks/amethyst_block"
"textures": "textures/blocks/portal_lyla"
},
"portal_mya": {
"textures": "textures/blocks/prismarine_bricks"
"textures": "textures/blocks/portal_mya"
},
"portal_field": {
"textures": "textures/blocks/portal_field"
Binary file not shown.

Before

Width:  |  Height:  |  Size: 228 B

After

Width:  |  Height:  |  Size: 220 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 321 B

After

Width:  |  Height:  |  Size: 295 B

+56
View File
@@ -482,12 +482,68 @@ def redstone_link_rx() -> Image.Image:
return img
# ── Lobby portal blocks ────────────────────────────────────
# These previously pointed terrain_texture.json at vanilla paths
# (emerald_block, amethyst_block, prismarine_bricks, end_portal_frame_top)
# which a custom pack cannot resolve, so they rendered as missing-texture
# once minecraft:geometry made material_instances take effect. Ship real
# textures instead: a dark stone frame around a glowing field, one hue per
# child, so the three destinations are distinguishable at a glance.
PORTAL_STONE = (58, 60, 68)
PORTAL_STONE_HL = (86, 89, 99)
PORTAL_STONE_SH = (34, 35, 41)
def _portal_face(core, bright, glow):
img = Image.new("RGBA", (16, 16), PORTAL_STONE)
# chiselled frame
rect(img, 0, 0, 15, 0, PORTAL_STONE_HL)
rect(img, 0, 0, 0, 15, PORTAL_STONE_HL)
rect(img, 0, 15, 15, 15, PORTAL_STONE_SH)
rect(img, 15, 0, 15, 15, PORTAL_STONE_SH)
rect(img, 2, 2, 13, 13, PORTAL_STONE_SH)
# glowing field
rect(img, 3, 3, 12, 12, core)
rect(img, 4, 4, 11, 11, bright)
rect(img, 6, 6, 9, 9, glow)
# corner sparks so the field reads as energy, not flat paint
for cx, cy in ((4, 4), (11, 4), (4, 11), (11, 11)):
px(img, cx, cy, glow)
# dark centre seam
rect(img, 7, 7, 8, 8, core)
return img
def portal_jamie(): return _portal_face((22, 92, 40), (46, 156, 66), (140, 240, 150))
def portal_lyla(): return _portal_face((78, 40, 130), (126, 74, 190), (214, 168, 255))
def portal_mya(): return _portal_face((22, 96, 104), (46, 152, 160), (150, 238, 244))
def portal_frame():
img = Image.new("RGBA", (16, 16), PORTAL_STONE)
rect(img, 0, 0, 15, 0, PORTAL_STONE_HL)
rect(img, 0, 0, 0, 15, PORTAL_STONE_HL)
rect(img, 0, 15, 15, 15, PORTAL_STONE_SH)
rect(img, 15, 0, 15, 15, PORTAL_STONE_SH)
# inset panel with a dull gold ring, echoing an end portal frame
rect(img, 3, 3, 12, 12, (48, 50, 57))
for x in range(4, 12):
px(img, x, 4, GOLD); px(img, x, 11, GOLD)
for y in range(4, 12):
px(img, 4, y, GOLD); px(img, 11, y, GOLD)
rect(img, 6, 6, 9, 9, (70, 66, 40))
px(img, 7, 7, GOLD_BRIGHT); px(img, 8, 8, GOLD_BRIGHT)
return img
def main() -> None:
save(smart_crafting_table(), "smart-crafting-addon/smart_crafting_RP/textures/blocks/smart_crafting_table.png")
save(post_office_block(), "postal-service-addon/postal_service_RP/textures/blocks/post_office.png")
save(mailbox_block(), "postal-service-addon/postal_service_RP/textures/blocks/mailbox.png")
save(tent_canvas(), "camping-supplies-addon/camping_supplies_RP/textures/blocks/tent_canvas.png")
save(portal_field(), "lobby-addon/lobby_transfer_RP/textures/blocks/portal_field.png")
save(portal_frame(), "lobby-addon/lobby_transfer_RP/textures/blocks/portal_frame.png")
save(portal_jamie(), "lobby-addon/lobby_transfer_RP/textures/blocks/portal_jamie.png")
save(portal_lyla(), "lobby-addon/lobby_transfer_RP/textures/blocks/portal_lyla.png")
save(portal_mya(), "lobby-addon/lobby_transfer_RP/textures/blocks/portal_mya.png")
save(redstone_link_tx(), "redstone-link-addon/redstone_link_RP/textures/blocks/redstone_link_tx.png")
save(redstone_link_rx(), "redstone-link-addon/redstone_link_RP/textures/blocks/redstone_link_rx.png")
Binary file not shown.

Before

Width:  |  Height:  |  Size: 407 B

After

Width:  |  Height:  |  Size: 366 B