Skip to content

feat: 优化世界管理#5842

Draft
Mine-diamond wants to merge 18 commits intoHMCL-dev:mainfrom
Mine-diamond:one-world-manage-page
Draft

feat: 优化世界管理#5842
Mine-diamond wants to merge 18 commits intoHMCL-dev:mainfrom
Mine-diamond:one-world-manage-page

Conversation

@Mine-diamond
Copy link
Contributor

@Mine-diamond Mine-diamond commented Mar 24, 2026

继续 #5215 对世界管理界面进行的优化第三期


复用页面:

  • 世界管理页面现在是单例的了,就像其它页面一样。
    • 使用Controllers.getWorldManagePage().setWorld(World world, Profile profile, String instanceId)来获取和设置页面
  • 世界管理页面会在不同世界时复用。
  • 相应的,世界信息页面,世界备份页面,数据包管理页面也经过了相应重构。

世界锁机制:

  • 现在World类本身持有锁,而不是在其它类中。
  • 原因是之前World类本身都不知道当前的锁是不是被自己锁定的,导致执行各种操作时需要协调WorldManagePage各种先释放锁再执行最后加锁,尽管某些操作根本不需要释放锁,现在World类本身知道自己是否持有锁,因此可以不再需要操作锁或者可以到内聚到World类中,简化了状态管理。
  • 虽然这可能导致无法完成一些情况比如一个持有锁的类不希望此时执行其它操作,但是这种情况应该是非常少见的。

世界备份功能:

  • 添加了还原备份功能。

重命名/复制世界:

  • 优化了重命名世界功能,现在不仅能修改level.dat中的名称,也能修改文件夹名称。
  • 重命名/复制世界功能输入对于文件名称不合法的名称会模拟minecraft的行为转换为合法的名称,而不是显示错误。
  • 重命名/复制弹窗现在会默认填充世界名称

其它

  • 快速启动不在会退出WorldManagePage页面,而是变为只读模式。
  • 子页面WorldBackupsPage/DatapackListPage不再存储readOnly字段中转,而是直接通过WorldManagePage获取。
  • 重命名World类方法supportDatapacks -> supportsDatapackssupportQuickPlay -> supportsQuickPlay
image image

@Mine-diamond Mine-diamond changed the title feat: 优化世界管理页面 feat: 优化世界管理 Mar 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant