fix: parse quoted custom_name keys in share display
This commit is contained in:
1 parent
fb6eb76529
commit
0b3d388b69
2 files changed
+19
-3
No files matched your search
+3
-3
@@ -69,11 +69,11 @@ def _extract_display_name(item_snbt: str) -> str:
|
|||||||
m = re.search(r'"text"\s*:\s*"([^"]+)"', item_snbt)
|
m = re.search(r'"text"\s*:\s*"([^"]+)"', item_snbt)
|
||||||
if m and m.group(1).strip():
|
if m and m.group(1).strip():
|
||||||
return _strip_mc_codes(m.group(1).strip())
|
return _strip_mc_codes(m.group(1).strip())
|
||||||
# display.Name / custom_name as plain string
|
# display.Name / custom_name as plain string (SNBT quoted key or bare key)
|
||||||
m = re.search(r'(?:Name|custom_name)\s*:\s*"([^"]+)"', item_snbt)
|
m = re.search(r'["\']?(?:Name|custom_name)["\']?\s*:\s*"([^"]+)"', item_snbt)
|
||||||
if m and m.group(1).strip():
|
if m and m.group(1).strip():
|
||||||
return _strip_mc_codes(m.group(1).strip())
|
return _strip_mc_codes(m.group(1).strip())
|
||||||
m = re.search(r"(?:Name|custom_name)\s*:\s*'([^']+)'", item_snbt)
|
m = re.search(r"['\"]?(?:Name|custom_name)['\"]?\s*:\s*'([^']+)'", item_snbt)
|
||||||
if m and m.group(1).strip():
|
if m and m.group(1).strip():
|
||||||
return _strip_mc_codes(m.group(1).strip())
|
return _strip_mc_codes(m.group(1).strip())
|
||||||
# translation key fallback (e.g. block.ae2.fluix_covered_cable)
|
# translation key fallback (e.g. block.ae2.fluix_covered_cable)
|
||||||
|
|||||||
@@ -251,6 +251,22 @@ def test_share_query_sanitizes_player():
|
|||||||
assert "Badname" in tr
|
assert "Badname" in tr
|
||||||
|
|
||||||
|
|
||||||
|
def test_extract_display_name():
|
||||||
|
from iridium.share import _extract_display_name
|
||||||
|
|
||||||
|
assert _extract_display_name('{id:"minecraft:stone",Count:1b}') == "minecraft:stone"
|
||||||
|
assert (
|
||||||
|
_extract_display_name(
|
||||||
|
'{id:"minecraft:fluix_covered_cable",Count:1b,tag:{display:{Name:"Fluix ME Covered Cable"}}}'
|
||||||
|
)
|
||||||
|
== "Fluix ME Covered Cable"
|
||||||
|
)
|
||||||
|
assert (
|
||||||
|
_extract_display_name('{id:"minecraft:diamond",components:{"minecraft:custom_name":"Shiny"}}')
|
||||||
|
== "Shiny"
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
fns = [v for k, v in sorted(globals().items()) if k.startswith("test_") and callable(v)]
|
fns = [v for k, v in sorted(globals().items()) if k.startswith("test_") and callable(v)]
|
||||||
failed = 0
|
failed = 0
|
||||||
|
|||||||
Reference in new issue
Block a user