frog_leg, cooked_frog_leg and snake_egg_block are declared in the behavior pack and mapped in item_texture.json, but the PNGs were never present, so all three rendered as missing-texture wherever they appeared. All three already had lang names, so only the art was absent. Drawn through scripts/build-textures.py to match the pack's existing style -- small sprite on transparency, muted natural palette, single highlight. The frog legs share one drumstick routine, raw carrying a green skin tint along the top contour and cooked a browned crust. snake_egg_block is a clutch of three eggs reusing the palette of the pack's existing single snake_egg.png, so the block form reads as a group of the item. RP bumped to 1.0.3 and mya's pin updated to match, otherwise clients keep serving the cached pack and never fetch the new files. Note: naturalist-lite-addon is absent from deploy.yml's PATHS, so CI never deploys it -- this was applied to the host by hand. That absence is also why the host sat on RP 1.0.1 while main was already at 1.0.2. 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
efac50aba7
commit
75219f9d1d
@@ -4,14 +4,26 @@
|
|||||||
"name": "Naturalist Lite Resources",
|
"name": "Naturalist Lite Resources",
|
||||||
"description": "Textures, models, and animations for Naturalist Lite mobs.",
|
"description": "Textures, models, and animations for Naturalist Lite mobs.",
|
||||||
"uuid": "de1b016a-3cf3-4f75-8076-5a5508ab8b74",
|
"uuid": "de1b016a-3cf3-4f75-8076-5a5508ab8b74",
|
||||||
"version": [1, 0, 2],
|
"version": [
|
||||||
"min_engine_version": [1, 21, 0]
|
1,
|
||||||
|
0,
|
||||||
|
3
|
||||||
|
],
|
||||||
|
"min_engine_version": [
|
||||||
|
1,
|
||||||
|
21,
|
||||||
|
0
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"modules": [
|
"modules": [
|
||||||
{
|
{
|
||||||
"type": "resources",
|
"type": "resources",
|
||||||
"uuid": "29da80f3-cffc-4c3b-997d-34f0820cc65b",
|
"uuid": "29da80f3-cffc-4c3b-997d-34f0820cc65b",
|
||||||
"version": [1, 0, 2]
|
"version": [
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
3
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
|
After Width: | Height: | Size: 177 B |
Binary file not shown.
|
After Width: | Height: | Size: 207 B |
Binary file not shown.
|
After Width: | Height: | Size: 204 B |
@@ -534,6 +534,77 @@ def portal_frame():
|
|||||||
return img
|
return img
|
||||||
|
|
||||||
|
|
||||||
|
# ── Naturalist Lite: three items shipped without icons ─────
|
||||||
|
# frog_leg, cooked_frog_leg and snake_egg_block are declared in the BP and
|
||||||
|
# mapped in item_texture.json, but the PNGs were never present, so they
|
||||||
|
# rendered as missing-texture. Drawn to match the pack's existing style:
|
||||||
|
# small sprite on transparency, muted natural palette, single highlight.
|
||||||
|
|
||||||
|
FROG_RAW = (176, 122, 128)
|
||||||
|
FROG_RAW_HI = (214, 164, 168)
|
||||||
|
FROG_RAW_SH = (126, 82, 92)
|
||||||
|
FROG_SKIN = (122, 148, 96)
|
||||||
|
FROG_COOK = (156, 104, 56)
|
||||||
|
FROG_COOK_HI = (198, 146, 88)
|
||||||
|
FROG_COOK_SH = (104, 64, 32)
|
||||||
|
BONE = (232, 226, 206)
|
||||||
|
BONE_SH = (176, 170, 152)
|
||||||
|
|
||||||
|
EGG_SHELL = (222, 214, 196)
|
||||||
|
EGG_SHELL_HI = (244, 240, 228)
|
||||||
|
EGG_SHELL_SH = (170, 162, 144)
|
||||||
|
EGG_SPOT = (150, 138, 112)
|
||||||
|
|
||||||
|
def _frog_leg(meat, hi, sh, skin=None):
|
||||||
|
"""Drumstick: meat mass upper-left, bone stub lower-right."""
|
||||||
|
img = Image.new("RGBA", (16, 16), (0, 0, 0, 0))
|
||||||
|
# meat mass
|
||||||
|
rect(img, 4, 2, 10, 8, meat)
|
||||||
|
rect(img, 3, 3, 3, 7, meat)
|
||||||
|
rect(img, 11, 3, 11, 7, meat)
|
||||||
|
rect(img, 5, 1, 9, 1, meat)
|
||||||
|
rect(img, 5, 9, 9, 9, meat)
|
||||||
|
# shading
|
||||||
|
rect(img, 4, 8, 10, 9, sh)
|
||||||
|
rect(img, 11, 4, 11, 7, sh)
|
||||||
|
# highlight
|
||||||
|
rect(img, 5, 2, 7, 3, hi)
|
||||||
|
px(img, 5, 4, hi)
|
||||||
|
# raw frog keeps a green tinge along the top contour rather than a patch,
|
||||||
|
# so it reads as skin on the meat instead of a floating square
|
||||||
|
if skin:
|
||||||
|
for sx, sy in ((6, 1), (7, 1), (8, 1), (9, 2), (10, 3), (5, 2)):
|
||||||
|
px(img, sx, sy, skin)
|
||||||
|
px(img, 8, 2, (140, 166, 112))
|
||||||
|
# bone stub running to lower-right
|
||||||
|
rect(img, 9, 10, 10, 11, BONE)
|
||||||
|
rect(img, 11, 12, 12, 13, BONE)
|
||||||
|
px(img, 12, 14, BONE)
|
||||||
|
px(img, 10, 11, BONE_SH)
|
||||||
|
px(img, 12, 13, BONE_SH)
|
||||||
|
px(img, 13, 14, BONE_SH)
|
||||||
|
return img
|
||||||
|
|
||||||
|
def frog_leg(): return _frog_leg(FROG_RAW, FROG_RAW_HI, FROG_RAW_SH, FROG_SKIN)
|
||||||
|
def cooked_frog_leg(): return _frog_leg(FROG_COOK, FROG_COOK_HI, FROG_COOK_SH)
|
||||||
|
|
||||||
|
def snake_egg_block():
|
||||||
|
"""A clutch of eggs, so it reads as the block form of the single egg item."""
|
||||||
|
img = Image.new("RGBA", (16, 16), (0, 0, 0, 0))
|
||||||
|
def egg(cx, cy, w, h):
|
||||||
|
rect(img, cx, cy, cx + w, cy + h, EGG_SHELL)
|
||||||
|
rect(img, cx, cy + h, cx + w, cy + h, EGG_SHELL_SH)
|
||||||
|
rect(img, cx + w, cy + 1, cx + w, cy + h, EGG_SHELL_SH)
|
||||||
|
px(img, cx + 1, cy + 1, EGG_SHELL_HI)
|
||||||
|
egg(2, 6, 4, 6)
|
||||||
|
egg(9, 5, 4, 6)
|
||||||
|
egg(5, 8, 4, 5)
|
||||||
|
# speckles
|
||||||
|
for sx, sy in ((3, 9), (11, 8), (6, 11), (4, 7), (12, 10)):
|
||||||
|
px(img, sx, sy, EGG_SPOT)
|
||||||
|
return img
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
save(smart_crafting_table(), "smart-crafting-addon/smart_crafting_RP/textures/blocks/smart_crafting_table.png")
|
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(post_office_block(), "postal-service-addon/postal_service_RP/textures/blocks/post_office.png")
|
||||||
@@ -546,6 +617,10 @@ def main() -> None:
|
|||||||
save(portal_mya(), "lobby-addon/lobby_transfer_RP/textures/blocks/portal_mya.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_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")
|
save(redstone_link_rx(), "redstone-link-addon/redstone_link_RP/textures/blocks/redstone_link_rx.png")
|
||||||
|
NAT = "naturalist-lite-addon/naturalist_lite_RP/textures/sf/nba/items/"
|
||||||
|
save(frog_leg(), NAT + "frog_leg.png")
|
||||||
|
save(cooked_frog_leg(), NAT + "cooked_frog_leg.png")
|
||||||
|
save(snake_egg_block(), NAT + "snake_egg_block.png")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|||||||
Reference in New Issue
Block a user