mc_version_lists.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. """
  2. 版本最新、存档页面列表
  3. """
  4. from homepagebuilder.interfaces import require,script,format_code
  5. mcv = require('minecraft_version') # 需求前置 MinecraftVersions
  6. MANIFSET = mcv.get_manifset()
  7. FULL_VERSIONS = MANIFSET.get('versions')
  8. ID_LIST = [version.get('id') for version in FULL_VERSIONS]
  9. @script('VersionArchiveList')
  10. def version_achive_list(cat_name,context,card,**_):
  11. components = context.components
  12. cat_name = format_code(code = cat_name,data=card)
  13. cards = list(filter(lambda card:isinstance(card.get('cats'),list)
  14. and cat_name in card.get('cats'), context.project.get_all_card()))
  15. code = '<StackPanel Margin="8,2,8,15">'
  16. cards.sort(key=lambda card:ID_LIST.index(format_code(card['version-id'],
  17. data=card)))
  18. if len(cards) > 0 and cards[0]['version-type-id'] not in ['Release','April-Fools']:
  19. code += components['VersionLinks/Future'].toxaml(card={})
  20. for vercard in cards:
  21. if vercard.get('lack'):
  22. code += components['VersionLinks/Lack'].toxaml(card=vercard)
  23. else:
  24. code += components['VersionLinks/Common'].toxaml(card=vercard)
  25. code += '</StackPanel>'
  26. return code
  27. @script('VersionLatestList')
  28. def version_latest_list(context,**_):
  29. proj = context.project
  30. components = context.components
  31. code = ''
  32. for version_type in ['release','snapshot']:
  33. if latest_version := mcv.get_latest(version_type):
  34. vercard = proj.base_library.get_card(latest_version,False)
  35. code += components['VersionLinks/Latest'].toxaml(card=vercard)
  36. return code