31 lines
1.2 KiB
Python
31 lines
1.2 KiB
Python
import zipfile, json, re
|
||
|
||
f = r'e:\MCStudioDownload\work\3027246179@qq.com\Cpp\AddOn\309c2d420bc84ee986db9cdd070ff02a\_sa_hanhua_out\sa_essentials-forge-1.20.1-1.0.0.jar'
|
||
z = zipfile.ZipFile(f)
|
||
en = json.loads(z.read('assets/sa_combat/lang/en_us.json').decode('utf-8'))
|
||
zh = json.loads(z.read('assets/sa_combat/lang/zh_cn.json').decode('utf-8'))
|
||
|
||
print('=== en_us 中所有 blueprint.* key(及其zh值) ===')
|
||
for k, v in en.items():
|
||
if 'blueprint' in k:
|
||
print(f' {k} = {v!r} | zh: {zh.get(k, "<缺失>")!r}')
|
||
|
||
print()
|
||
print('=== 运行时 class 引用的 lang key(sa_combat namespace) ===')
|
||
pat = re.compile(rb'(?:tooltip|gui|container|block|item|creativetab|key|menu|entity|description)\.[a-z0-9_]+\.[a-z0-9_.]+')
|
||
refs = {}
|
||
for n in z.namelist():
|
||
if n.endswith('.class') and 'datagen' not in n:
|
||
data = z.read(n)
|
||
for m in pat.findall(data):
|
||
try:
|
||
s = m.decode()
|
||
except:
|
||
continue
|
||
if s.startswith('tooltip.') or s.startswith('gui.') or s.startswith('creativetab.') or s.startswith('key.') or s.startswith('menu.'):
|
||
refs.setdefault(s, set()).add(n)
|
||
for k in sorted(refs):
|
||
print(f' {k}')
|
||
for c in sorted(refs[k]):
|
||
print(f' <- {c}')
|