From 8881af586b546e0a34f9fc5a2aa673d7331d6a9b Mon Sep 17 00:00:00 2001 From: l3126596029 Date: Sun, 13 Sep 2026 03:41:34 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E5=B8=A6=E5=BC=95=E5=8F=B7=E7=9A=84=20custom=5Fname=20?= =?UTF-8?q?=E9=94=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- iridium/share.py | 6 +++--- tests/test_pure.py | 16 ++++++++++++++++ 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/iridium/share.py b/iridium/share.py index 5040117..6426c12 100644 --- a/iridium/share.py +++ b/iridium/share.py @@ -69,11 +69,11 @@ def _extract_display_name(item_snbt: str) -> str: m = re.search(r'"text"\s*:\s*"([^"]+)"', item_snbt) if m and m.group(1).strip(): return _strip_mc_codes(m.group(1).strip()) - # display.Name / custom_name as plain string - m = re.search(r'(?:Name|custom_name)\s*:\s*"([^"]+)"', item_snbt) + # display.Name / custom_name as plain string (SNBT quoted key or bare key) + m = re.search(r'["\']?(?:Name|custom_name)["\']?\s*:\s*"([^"]+)"', item_snbt) if m and 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(): return _strip_mc_codes(m.group(1).strip()) # translation key fallback (e.g. block.ae2.fluix_covered_cable) diff --git a/tests/test_pure.py b/tests/test_pure.py index a09e945..b49541b 100644 --- a/tests/test_pure.py +++ b/tests/test_pure.py @@ -251,6 +251,22 @@ def test_share_query_sanitizes_player(): 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__": fns = [v for k, v in sorted(globals().items()) if k.startswith("test_") and callable(v)] failed = 0