fix(lobby): ship real portal textures; they pointed at vanilla paths
Deploy Addons / deploy (push) Failing after 0s
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:
co-authored by
Claude Opus 5
parent
57c06dde06
commit
50af20981f
@@ -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")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user