';
+ }
+ resultdiv.append(searchitem);
+ }
+ });
+});
diff --git a/assets/js/lunr/lunr-store.js b/assets/js/lunr/lunr-store.js
new file mode 100644
index 0000000..b28b757
--- /dev/null
+++ b/assets/js/lunr/lunr-store.js
@@ -0,0 +1,1489 @@
+var store = [{
+ "title": "开发版更新日志",
+ "excerpt":" Changelogs are written in Chinese. ","categories": [],
+ "tags": [],
+ "url": "/changelog/dev.html",
+ "teaser": null
+ },{
+ "title": "稳定版更新日志",
+ "excerpt":" Changelogs are written in Chinese. ","categories": [],
+ "tags": [],
+ "url": "/changelog/stable.html",
+ "teaser": null
+ },{
+ "title": "3.10.0.315",
+ "excerpt":"详细版本介绍 (Bilibili) GP-4932: 在主页右键点击账户按钮时弹出快速切换账户菜单 (by zimzaza4) GP-5011: 在 JFXCustomColorPickerDialog 中使用 HEX 作为默认 Tab (by Glavo) GP-5019: 使用子标题注解“提前预览 HMCL 版本”选项 (by neveler) GP-5019: 使用子标题显示“重启后生效”提示 (by neveler) GP-4927: 在 macOS 平台上导出启动脚本时支持导出 .command 文件 (by WhatDamon) GP-4872: 添加快速进入世界功能 (by mineDiamond) GP-5008: 优化反馈页面 (by Glavo) GP-5035: 在所有平台上将 : 视为文件名中的非法字符 (by 辞庐) GP-5016: 在刷新 ModListPage...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.10/3.10.0.315.html",
+ "teaser": null
+ },{
+ "title": "3.10.0.317",
+ "excerpt":"详细版本介绍 (Bilibili) GP-4289: 在添加游戏目录页面选择目录时自动填写名称 (by Dime,辞庐,Glavo) GP-4794: 优化微软登录页面 (by 辞庐,3gf8jv4dv) GP-4882: 取消 FXUtils#onClicked 的连点限制 (by 辞庐) GP-5043: 修复导出整合包界面以及 NBT 文件查看界面样式 (by Calboot) GP-5046: 禁用游戏日志窗口的平滑滚动效果 (by Glavo) GP-5052: 优化列表的平滑滚动效果 (by Glavo) GP-5054: 优化账户选择弹窗在列表为空时的表现 (by mineDiamond) GP-5056: 优化列表性能 (by Glavo) GP-5057: 更新“没有游戏实例”标签的颜色 (by Glavo) GP-5060: 优化非主窗口中对话框的效果 (by 辞庐) GP-5062: 更新 NBT 标签图标...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.10/3.10.0.317.html",
+ "teaser": null
+ },{
+ "title": "3.10.0.318",
+ "excerpt":"详细版本介绍 (Bilibili) GP-4823: 优化世界管理界面和世界信息界面 (by mineDiamond, 3gf8jv4dv) GP-4832: 支持更新部分模组 (by ZZZank) GP-4929: 将陶瓦联机更新至 0.4.1 (by Burning_TNT) GP-5026: 限制访问 Modrinth/CurseForge 时的并发数 (by Burning_TNT) GP-5133: 修复第三方构建下禁用账户刷新的 tooltip 展示不支持的超链接标签的问题 (by Wulian233, 3gf8jv4dv) GP-5137: 允许重命名实例时使用原名 (by mineDiamond) GP-5143, GP-5168: 优化对获取账号信息时发生 SSL 异常的处理 (by Xirren, 3gf8jv4dv) GP-5146: 使用 kala-compress 读取模组元数据 (by Glavo) GP-5150: 调整平滑滚动的截止速度 (by...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.10/3.10.0.318.html",
+ "teaser": null
+ },{
+ "title": "3.10.0.319",
+ "excerpt":"详细版本介绍 (Bilibili) GP-5208: 惰性初始化 JFXRippler 属性 (by Glavo) GP-5211: 优化下载页面图标缓存功能 (by Glavo) GP-5221: 更新 ToolbarListPageSkin 以使用 JFXListView 展示节点 (by Glavo) GP-5223: 重构 JavaManagementPage 以使用 ListCell 展示元素 (by Glavo) GP-5224: 重构 WorldListPage 以使用 ListCell 展示元素 (by Glavo) 错误修复: GP-5203: 修复实例列表不显示实例名的问题 (by Xirren) GP-5220: 修复 CurseForge 源无法搜索到内容的问题 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.10/3.10.0.319.html",
+ "teaser": null
+ },{
+ "title": "3.11.0.321",
+ "excerpt":"详细版本介绍 (Bilibili) GP-4792: 优化 Fabric API / Quilt API 安装提示 (by 辞庐, 3gf8jv4dv) GP-5029: 优化检查模组更新功能 (by Burning_TNT) GP-5090: 支持自动安装 Legacy Fabric (by 辞庐) GP-5172: 支持通过拖动标题栏退出最大化 (by neveler) GP-5196: 使用 Forge/Quilt 加载器时模组管理页面应当扫描子文件夹 (by Wulian233) GP-5198: 将世界管理界面“生成启动脚本”按钮折叠到二级菜单 (by Glavo) GP-5239: 下载页面图标尚未加载时应当将图像更新为空白 (by Glavo) GP-5250: Modrinth 默认不获取更新日志 (by Calboot) GP-5251: 修复自动安装界面卡片上按钮无法点击的问题 (by 神奇的赵二...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.11/3.11.0.321.html",
+ "teaser": null
+ },{
+ "title": "3.11.0.322",
+ "excerpt":"详细版本介绍 (Bilibili) GP-4733: 导出日志时允许重名文件 (by Glavo) GP-5245: 修复主页公告阴影被裁切的问题 (by 辞庐) GP-5270: 在陶瓦联机页面添加切换账号菜单 (by Glavo) GP-5279: 更新下载页面条目样式 (by Glavo) GP-5283, GP-5319: 优化深色模式支持 (by Glavo) GP-5292: 更新文本输入框的右键菜单样式 (by 辞庐) GP-5296: 扫描模组子目录时忽略 .connector 文件夹 (by 辞庐) GP-5304: 取消游戏下载页面中高版本游戏对 Windows 7 的不兼容提示 (by 辞庐) 错误修复: GP-5284: 修复部分列表页面出现横向滚动条的问题 (by Glavo) GP-5299: 修复添加认证服务器对话框非 CJK 语言下宽度异常的问题 (by...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.11/3.11.0.322.html",
+ "teaser": null
+ },{
+ "title": "3.11.0.323",
+ "excerpt":"详细版本介绍 (Bilibili) GP-5390: 将 TwelveMonkeys 更新至 3.13.0 (by Glavo) GP-5391: 将 XZ for Java 更新至 1.11 (by Glavo) GP-5392: 将 Gradle Shadow 插件更新至 9.3.1 (by Glavo) GP-5385: 优化 ComponentList (by Glavo) GP-4975: 调整渲染器名称 (by Chen Meng) GP-5337: 使用 LineSelectButton 代替 JFXComboBox (by Glavo) GP-5215: 优化世界管理与世界信息页面 (by mineDiamond, 3gf8jv4dv, Glavo) GP-5272:...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.11/3.11.0.323.html",
+ "teaser": null
+ },{
+ "title": "3.11.0.325",
+ "excerpt":"详细版本介绍 (Bilibili) GP-5395, GP-5408, GP-5416, GP-5446: 统一列表卡片样式 (by Glavo) GP-5422: 优化日志窗口无日志行的背景色 (by 辞庐) GP-5405: 统一加载指示器大小 (by 辞庐) GP-5406: 统一实例管理页面子页面刷新时的样式 (by 辞庐) GP-5426: 导出运行栈时附加 -e 和 -l 参数 (by 辞庐) GP-5456: 优化工具栏按钮图标 (by Glavo) GP-5465, GP-5474: 优化下载页面条目中标签的展示方式 (by Glavo) GP-5481: 优化设置页面检查更新设置项的样式 (by Glavo) GP-5467: 自动展开 NBT 查看器中部分子标签 (by Calboot) GP-5417: 更新文言文...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.11/3.11.0.325.html",
+ "teaser": null
+ },{
+ "title": "3.11.0.326",
+ "excerpt":"详细版本介绍 (Bilibili) GP-5504: 更新陶瓦联机至 0.4.2 (by Glavo) GP-5462: 未安装实例时点击主页“开始游戏”按钮不选择不支持当前平台的版本 (by 辞庐, Glavo) 错误修复: GP-5369: 修复在 ZIP 文件中遇到重名目录条目时读取失败的问题 (by NoClassDefFoundError) GP-5507: 修复陶瓦联机页面“导出联机日志”按钮内边距异常的问题 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.11/3.11.0.326.html",
+ "teaser": null
+ },{
+ "title": "3.12.0.327",
+ "excerpt":"详细版本介绍 (Bilibili) GP-5330, GP-5531, GP-5538: 更新微软账户登录流程 (by 辞庐, Glavo) GP-5368: 阻止在颜色选择器中输入非法颜色信息 (by Damon Lu) GP-5527: 增加弹窗图标内容间距 (by 辞庐) GP-5524: 将指向 MCEdit 的链接替换为 Minecraft Wiki 的教程页面 (by 3gf8jv4dv) GP-5394: 使 Java 下载页面可以同时下载多个 Java (by NoClassDefFoundError) 错误修复: GP-5508: 修复部分请求头中 Accept-Language 字段包含 Java 版本的问题 (by Glavo) GP-5520: 修复下载游戏版本列表点击左侧图标无法触发水波纹效果及光标没有变成手型的问题 (by 辞庐) GP-5522: 修复安装卡片部分区域点击无法触发水波纹效果的问题 (by...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.12/3.12.0.327.html",
+ "teaser": null
+ },{
+ "title": "3.12.0.328",
+ "excerpt":"详细版本介绍 (Bilibili) GP-5242: 支持在实例列表搜索实例 (by 辞庐) GP-5514: 为“渲染器”添加描述 (by Damon Lu) GP-5521: 优化下载页面条目水波纹样式 (by 辞庐) GP-5539: 解析 Yggdrasil 服务器地址时遵循服务器重定向 (by Glavo) GP-5552: 支持新版本世界指定资源包位置 (by mineDiamond) GP-5583: 支持在 FreeBSD x86-64、Linux Arm64、Linux RISC-V64 平台上启动 Minecraft 26.1-snapshot-8 或更高版本 (by Glavo) GP-5585: 修复下载源失效时刷新版本列表不会回退到备用下载源的问题 (by Glavo) GP-5586: 优化无法补全 JavaFX 时的报错信息 (by Glavo) GP-5546, GP-5559, GP-5560,...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.12/3.12.0.328.html",
+ "teaser": null
+ },{
+ "title": "3.12.0.330",
+ "excerpt":"详细版本介绍 (Bilibili) GP-5030: 重新启用 MCIM 加速 (by Glavo) GP-5359: 修复语言为文言时下载游戏的选择模组加载器页面的版本号未本地化的问题 (by Wulian233) GP-5458, GP-5463: 下载界面简介不滚动 (by Calboot) GP-5554: 向图标添加圆角 (by Dime) GP-5603: 下载任务在重试前添加等待延迟 (by Glavo) GP-5610: 优化设备代码流登录流程 (by Glavo) GP-5622: 更新 Copyright 年份 (by 3gf8jv4dv) GP-5624: 更新对 Linux LoongArch64 平台的支持 (by Glavo) GP-5638: 切换实例隔离设置后自动刷新其他子页面 (by 辞庐) GP-5652: 在世界管理页面中不展示 zip 格式的世界...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.12/3.12.0.330.html",
+ "teaser": null
+ },{
+ "title": "3.12.0.331",
+ "excerpt":"详细版本介绍 (Bilibili) GP-5731: 将 Gradle 更新至 9.4.0 (by 辞庐) GP-5717: 将 JetBrains Java Annotations 更新至 26.1.0 (by Glavo) GP-5675: 支持解析 Minecraft 26.1-snapshot-6 新版本存档数据 (by mineDiamond) GP-5690: 优化 FileSelector 按钮样式 (by 辞庐) GP-5697: 将 BAT 脚本命令长度限制增加至 32767 (by 辞庐) GP-5698: 优化安装实例时自动补全模组加载器名称 (by 辞庐) GP-5707: 优化 LineSelectButton 弹出菜单配色 (by 辞庐) GP-5716: 向滚动条添加圆角...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.12/3.12.0.331.html",
+ "teaser": null
+ },{
+ "title": "3.12.0.332",
+ "excerpt":"详细版本介绍 (Bilibili) GP-5773: 更新模组数据 (by Glavo) GP-4706: 添加”关闭启动时的更新弹窗”选项 (by An5w1r, Glavo) GP-5620: 更新关于页面的许可证信息 (by 3gf8jv4dv) GP-5769: 当背景自定义路径是文件夹时随机在文件夹中选取图片作为背景 (by 辞庐) GP-5664: 优化删除垃圾桶图标 (by 辞庐) GP-5663: 调整导出游戏运行栈加载指示器大小 (by 辞庐) 错误修复: GP-5728: 修复“从互联网下载整合包”选项对话框可能会意外被关闭的问题 (by Glavo) GP-5765: 修复 26.1-pre-1 版本号无法归一化的问题 (by mineDiamond) GP-5772: 修复显示器 125% 缩放时弹出菜单内容模糊的问题 (by 辞庐) GP-5776: 修复颜色选择器中“自定义颜色”对话框初始值不会与当前颜色同步的问题 (by Damon Lu) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.12/3.12.0.332.html",
+ "teaser": null
+ },{
+ "title": "3.2.114",
+ "excerpt":" 修复导入整合包时的乱码问题 更新 authlib-injector 从 Cursemeta 上下载 Curse 上被删除的 Mod 文件 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.114.html",
+ "teaser": null
+ },{
+ "title": "3.2.115",
+ "excerpt":" 修复安装游戏后不显示游戏的问题 修复下载资源文件时潜在的崩溃问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.115.html",
+ "teaser": null
+ },{
+ "title": "3.2.116",
+ "excerpt":" 在缓存目录无效时自动更改设置 在安装游戏失败时删除不完全的游戏 自动检测整合包、游戏存档、数据包的编码以增强兼容性 在更新整合包时进行游戏文件的备份 添加打开存档文件夹的菜单 添加刷新模组列表的按钮 支持拖拽游戏存档压缩包到游戏界面以便安装游戏存档 修复皮肤图片文件损坏时导致的崩溃问题 修复配置文件格式不正确时导致的崩溃问题 修复 Curse 整合包更新失败的问题 修复自动更新弹出气泡的界面错乱问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.116.html",
+ "teaser": null
+ },{
+ "title": "3.2.117",
+ "excerpt":" 提醒用户在修改版本独立选项时需要注意游戏文件的转移 修复 Java 10 上 UI 错位的问题 修复游戏认证服务器列表的渲染问题 修复启动 Curse 整合包时尝试下载被禁用的模组的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.117.html",
+ "teaser": null
+ },{
+ "title": "3.2.119",
+ "excerpt":" 添加提示部分版本的 Forge 和 LiteLoader 不兼容的问题 在模组管理面板添加加载进度条 支持整合包拖拽到主页面打开安装向导 支持新版 MultiMC 整合包的导入 删除在版本管理页面中的删除游戏和重命名按钮 加载游戏存档过程更加流畅 在登录对话框中添加注册链接 修复标题栏中没有显示返回主页按钮的问题 修复保存设置时的潜在问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.119.html",
+ "teaser": null
+ },{
+ "title": "3.2.120",
+ "excerpt":" 修复打开版本管理时的崩溃 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.120.html",
+ "teaser": null
+ },{
+ "title": "3.2.121",
+ "excerpt":" 支持 Forge 1.13 的自动安装 安装游戏时更新资源文件 启动时下载缺失的 Minecraft 本体文件 支持自动检测整合包自带的 Java 运行时 更新 authlib-injector 下载库文件失败时提供更友好的提示 重构正版登录 修复启动按钮无法根据背景颜色更改字体颜色的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.121.html",
+ "teaser": null
+ },{
+ "title": "3.2.123",
+ "excerpt":" 启动前检查是否是 Java 8~10 模组管理面板支持多选 下载库文件失败时提供更友好的提示 只从 BMCLAPI 获取 Forge 列表 添加 BMCLAPI 赞助信息 修复头像不显示头盔层的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.123.html",
+ "teaser": null
+ },{
+ "title": "3.2.124",
+ "excerpt":" 修复无法正版登录的问题 修复 mods 不是文件夹时无法安装模组的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.124.html",
+ "teaser": null
+ },{
+ "title": "3.2.126",
+ "excerpt":" 重构任务执行器 修复填写账号时崩溃的问题 修复添加账号面板中认证服务器列表显示不正确的问题 修复刷新版本列表时的卡顿问题 修复无法刷新 Forge 列表的问题 修复 Forge 1.13 安装问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.126.html",
+ "teaser": null
+ },{
+ "title": "3.2.127",
+ "excerpt":" 禁止用户同时安装 Forge 1.13.2 和 OptiFine ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.127.html",
+ "teaser": null
+ },{
+ "title": "3.2.129",
+ "excerpt":" 在未安装 Mod API 的情况下禁用模组管理面板 为自动安装中的 Forge、LiteLoader、OptiFine 添加更新按钮 忽略游戏存档名中的颜色转移符 隐藏游戏版本不匹配的游戏存档 允许数据包列表页面多选 修复无法下载安装 Forge 的问题 修复下载失败后无法删除游戏版本的问题 修复设置页面下方有大面积空白区域的问题 回滚 JFoenix 组件库以修复一些 UI 的细节问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.129.html",
+ "teaser": null
+ },{
+ "title": "3.2.130",
+ "excerpt":" 添加对 Fabric 模组的管理支持 将游戏依赖的动态链接库解压到 .minecraft 中而不是系统临时文件夹 在遇到 SocketTimeoutException 时弹窗提示用户超时 在遇到 404 时提示用户找不到文件而不是 IOException 在 HMCL 本体不完整时提示用户而不是崩溃 在启动器更新时显示更新日志 禁止导出 1.13.2 游戏整合包 修复删除游戏版本时消息框重复显示的问题 修复删除模组时可能出现的 NullPointerException 修复尝试更新 OptiFine 时却没有可用版本时导致的崩溃 修复刷新数据包列表时崩溃的问题 修复不能导入 Fabric 官方网站提供的 MultiMC 整合包的问题 修复启动器皮肤预览异常的问题 修复 macOS 无法安装 1.13.2 Forge 的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.130.html",
+ "teaser": null
+ },{
+ "title": "3.2.132",
+ "excerpt":" 添加 Fabric 自动安装 添加西班牙语 支持导出 MultiMC 整合包 修复无法下载 Curse 模组的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.132.html",
+ "teaser": null
+ },{
+ "title": "3.2.133",
+ "excerpt":" 新安装的游戏支持修改游戏版本 支持在打开启动器后的主页面按回车键启动游戏 支持游戏列表内点击列表项进入游戏设置,右键列表项打开游戏管理菜单 修复 OptiFine 自动安装(需要重新安装 OptiFine 生效) 修复无法从本地安装 OptiFine 的问题 修复同时安装 Forge 和 OptiFine 自动安装失败的问题 不再强制使用 java.exe ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.133.html",
+ "teaser": null
+ },{
+ "title": "3.2.134",
+ "excerpt":" 修复了某些情况下无法安装 1.12.2 及以下版本的 Forge 的问题 修复输入某些错误的 Java 路径时导致的崩溃 修复了浏览 Mod 列表时可能出现的崩溃问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.134.html",
+ "teaser": null
+ },{
+ "title": "3.2.135",
+ "excerpt":" 添加 authlib-injectors.json,允许服主将添加账号页面更改为默认添加指定服务器的 Authlib Injector 账户 访问 https://www.huangyuhui.net/index.php/2019/09/09/109/ 以查看添加方法 检查安装游戏时输入的名称是否符合 Windows 系统需求 修复导出整合包导入时无法安装 1.13 Forge 和 OptiFine 的问题 修复部分情况下无法下载 Forge 安装包的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.135.html",
+ "teaser": null
+ },{
+ "title": "3.2.136",
+ "excerpt":" 修复 tryCacheLibrary 可能导致崩溃的问题 修复无法安装 1.14.4 及 1.15 快照的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.136.html",
+ "teaser": null
+ },{
+ "title": "3.2.137",
+ "excerpt":" 更新了英语和俄语翻译 修复了一些导致启动器崩溃的问题 修复了无法识别 Java 12 的问题 修复了无法下载 Curse 整合包模组的问题 修复了下载 Curse 整合包失败后删除了对应版本的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.137.html",
+ "teaser": null
+ },{
+ "title": "3.2.138",
+ "excerpt":" 添加服务器自动更新整合包,允许服务器远程更新游戏客户端 允许直接从给定链接下载整合包并安装 日志窗口允许关闭自动滚动 更新了英语翻译 修复了部分情况下可能导致崩溃的问题 修复了无法获取使用 authlib-injectors.json 添加的服务器的服务器名称的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.138.html",
+ "teaser": null
+ },{
+ "title": "3.2.139",
+ "excerpt":" 修复服务器整合包下载时可能丢失文件的问题 修复读取 authlib-injectors.json 时对链接格式要求过严的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.139.html",
+ "teaser": null
+ },{
+ "title": "3.2.143",
+ "excerpt":" 修复关闭 JVM 检查时仍然会检查 java.exe 是否合法的问题 修复下载服务端整合包没有对链接转义而无法下载的问题 修复下载游戏时可能出现的 “HTTP 302” 错误 导出整合包时将剔除所有日志文件和 CustomSkinLoader 的缓存 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.143.html",
+ "teaser": null
+ },{
+ "title": "3.2.144",
+ "excerpt":" 修复导入 HMCL 整合包时无法安装 Forge 的问题 修复无法下载 Curse 整合包部分 Mod(如潘马斯)的问题 修复下载 Curse 整合包 Mod 失败后会删除整合包的问题 修复无法启动使用 Vivecraft 安装器新安装的游戏的问题 修复启动 1.15 时不会停止等待的问题 修复 Windows 下导出启动脚本对双引号的错误转义 修复部分正版账号登录 1.7.10 会导致游戏崩溃的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.144.html",
+ "teaser": null
+ },{
+ "title": "3.2.145",
+ "excerpt":" 修复无法取消下载的问题 添加 MCBBS 下载源 在资源索引文件不合法时尝试重新下载 修复切换游戏版本后启动失败的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.145.html",
+ "teaser": null
+ },{
+ "title": "3.2.146",
+ "excerpt":" 改进部分错误提示 更新繁体中文语言文件 修复重复下载游戏依赖文件的问题 修复原版游戏用熔炉图标标识的问题 修复取消登录时导致启动器崩溃的问题 修复无法取消启动过程和安装过程的问题 修复无法正常更新 authlib-injector 的问题 修复在缺失资源索引文件时无法启动游戏的问题 现官方下载源下载 Forge 时依赖文件不再强制从 BMCLAPI 下载 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.146.html",
+ "teaser": null
+ },{
+ "title": "3.2.147",
+ "excerpt":" 修复正版登录失败的问题 修复无法正常显示错误信息的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.147.html",
+ "teaser": null
+ },{
+ "title": "3.2.148",
+ "excerpt":" 更新 Fabric 的 BMCLAPI 和 MCBBS 下载源支持 更新繁体中文语言文件 当 Curse 整合包部分 Mod 因服务器上文件不存在而下载失败时不删除游戏 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.148.html",
+ "teaser": null
+ },{
+ "title": "3.2.149",
+ "excerpt":" 在主界面账户栏添加鼠标悬浮提示以查看完整游戏名 在主界面账户栏添加鼠标滚轮便捷切换游戏账户 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.149.html",
+ "teaser": null
+ },{
+ "title": "3.2.150",
+ "excerpt":" 加快界面动画速度 改善游戏下载速度 添加清理缓存文件夹按钮 修改安装游戏向导的界面 在启动游戏、安装游戏等界面显示总下载速度 在资源索引文件为空时自动重新下载资源文件 在当前下载源下载失败后自动重试其他下载源 在删除 Mod、世界、数据包时弹出删除确认提示 在启动游戏、安装游戏等界面显示明确的安装步骤 在游戏崩溃后的第二次启动时自动检查资源和支持库文件是否完整 修复启动器崩溃时可能再次崩溃的问题 修复部分整合包无法修改启动时游戏窗口大小的问题 修复在 Curse 整合包安装部分成功时删除游戏的问题 修复从 MCBBS 下载源下载文件可能会下载到空文件的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.150.html",
+ "teaser": null
+ },{
+ "title": "3.2.151",
+ "excerpt":" 修复 3.2.150 部分游戏启动失败的问题 修改 Mod、数据包页面的界面样式 修复终止游戏后启动器不会停止等待的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.2/3.2.151.html",
+ "teaser": null
+ },{
+ "title": "3.3.152",
+ "excerpt":" 调整界面样式 修改默认下载源为 MCBBS 允许在启动游戏按钮上滑动鼠标滚轮切换游戏 显示资源和 Curse Mod 下载总进度 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.152.html",
+ "teaser": null
+ },{
+ "title": "3.3.153",
+ "excerpt":" 调整界面样式 提升自动安装功能与其他启动器的兼容性 修复快速切换游戏时可能导致的一些问题 支持调整启动器窗口大小 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.153.html",
+ "teaser": null
+ },{
+ "title": "3.3.154",
+ "excerpt":" 修复 3.3.153 导致的启动失败问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.154.html",
+ "teaser": null
+ },{
+ "title": "3.3.155",
+ "excerpt":" 修复 3.3.154 导致的启动失败问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.155.html",
+ "teaser": null
+ },{
+ "title": "3.3.156",
+ "excerpt":" 修复 3.3.155 导致的启动失败问题 在修改游戏版本时要求重新安装相关库 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.156.html",
+ "teaser": null
+ },{
+ "title": "3.3.157",
+ "excerpt":" 更新俄语翻译 在游戏设置页面添加重命名等只能在游戏列表操作的功能 在自动安装页面可以删除已选择安装的第三方库 添加复制游戏实例功能 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.157.html",
+ "teaser": null
+ },{
+ "title": "3.3.158",
+ "excerpt":" 调整界面细节 修复游戏安装失败时提示安装完成的问题 在自动安装 Forge、OptiFine 等库时若下载失败,自动重试其他下载源 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.158.html",
+ "teaser": null
+ },{
+ "title": "3.3.159",
+ "excerpt":" 调整界面细节 在日志窗口添加导出游戏日志功能 修复复制游戏实例后的新游戏无效的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.159.html",
+ "teaser": null
+ },{
+ "title": "3.3.160",
+ "excerpt":" 主界面标题栏透明 游戏崩溃后弹出的日志窗口直接显示游戏崩溃报告(而不是游戏日志) 修复游戏崩溃后弹出的日志窗口无法显示日志的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.160.html",
+ "teaser": null
+ },{
+ "title": "3.3.161",
+ "excerpt":" 调整界面细节 修复无法安装 Forge 1.12.2 2852 的问题 提升与 ServerSync 的兼容性 安装游戏向导内可直接切换下载源,而不需要返回启动器设置页面 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.161.html",
+ "teaser": null
+ },{
+ "title": "3.3.162",
+ "excerpt":" 修复无法下载资源文件的问题 修复无法同时安装 Forge 1.12.2 2852 和 OptiFine 的问题 加强对支持库文件完整/损坏的检查能力 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.162.html",
+ "teaser": null
+ },{
+ "title": "3.3.163",
+ "excerpt":" 修复日志窗口无法清除日志的问题 检查下载的 Fabric 安装包是否完整,避免 MCBBS 源带来的错误 启动提示内存过大时允许停止启动 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.163.html",
+ "teaser": null
+ },{
+ "title": "3.3.164",
+ "excerpt":" 更新俄语翻译 修复在“在游戏启动后关闭启动器”启用时游戏无法启动的问题 修复弹出对话框时无法拖动窗口的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.164.html",
+ "teaser": null
+ },{
+ "title": "3.3.165",
+ "excerpt":" 修复无法自动更新的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.165.html",
+ "teaser": null
+ },{
+ "title": "3.3.166",
+ "excerpt":" 修复进入游戏设置后无法重命名部分游戏版本的问题 修复 Curse 整合包下载时遗漏 Mod 的问题 修复部分情况下弹框消失的问题 在 OptiFine 库缺失时可以自动补全 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.166.html",
+ "teaser": null
+ },{
+ "title": "3.3.168",
+ "excerpt":" 将主界面的版本列表弹框的滚动条改为黑色 修复某些情况下启动游戏时,提示 NullPointerException 的问题 允许使用在启动器同目录下的 authlib-injector.jar 文件 修复刷新下载列表时可能提示 ConcurrentModificationException 的问题 修复重命名被依赖的版本后,会破坏其他依赖这个版本的版本的问题 更正重命名版本时,输入不合法的新名字后的错误提示 修复在自定义游戏运行目录时,输入不合法的路径会导致崩溃的问题 修复在输入特定错误的 authlib-injector 服务器地址时会导致启动器崩溃的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.168.html",
+ "teaser": null
+ },{
+ "title": "3.3.169",
+ "excerpt":" 修复 1.12.2 同时安装 Forge, OptiFine 时无法进入游戏存档的问题 修复服务器自动更新整合包更新时可能会出现 AccessDeniedException 的问题 现在会记住启动器上次使用的窗口大小 游戏设置页面也可以安装游戏、添加整合包和刷新版本列表 游戏设置页面可以修改默认启动游戏版本 使用外置登录账户时,主页面的账户将显示认证服务器名称 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.169.html",
+ "teaser": null
+ },{
+ "title": "3.3.170",
+ "excerpt":" 修复部分情况下崩溃的问题 支持同时安装 Minecraft 1.14.4 及以上版本的 Forge 和 OptiFine ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.170.html",
+ "teaser": null
+ },{
+ "title": "3.3.172",
+ "excerpt":" 添加窗口阴影 添加为正版账号上传皮肤的功能 现在会校验资源索引文件的完整性 现在启动器代理设置对启动后的游戏有效 自动安装页面将提示不兼容的第三方库,比如 Forge 和 Fabric 不兼容 添加启动器的 JVM 参数 -Dhmcl.font.override=fontfamily 以允许 Linux 用户更换字体以解决白屏问题 修复无法安装 Curse 整合包的问题 修复下载资源文件时不能自动切换下载源的问题 修复 1.5.2 及以下版本不能下载资源文件的问题 修复 1.5.2 及以下版本安装 Forge 后启动失败的问题 修复不能在 Java 17 下载 Forge 和自动更新的问题 修复整合包配置丢失后整合包游戏版本不能修改配置的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.172.html",
+ "teaser": null
+ },{
+ "title": "3.3.173",
+ "excerpt":" 修复启动 Minecraft 1.0 时不会停止等待游戏启动的问题 更新游戏整合包后会显示新的版本号 修复更新整合包下载地址不能使用在线下载自动更新整合包的问题 修复首次打开整合包会弹出 3 个新建账户窗口的问题 配置文件会优先选择启动器同目录而不是工作目录 修复运行在 Java 12+ 时列表和下拉菜单不能正常显示的问题 修复鼠标指针不正常的问题 修复添加外置登录的正版账号后会与普通正版账号冲突的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.173.html",
+ "teaser": null
+ },{
+ "title": "3.3.174",
+ "excerpt":" 允许第三方修改 HMCL 的 BMCLAPI 下载源,从而支持第三方下载源 自动设置游戏的默认语言为中文 修复因为线程过多导致在 macOS 系统上运行崩溃的问题 修复重命名游戏版本点击移动窗口而不是移动光标的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.174.html",
+ "teaser": null
+ },{
+ "title": "3.3.175",
+ "excerpt":" 修复部分情况误修改 options.txt 的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.175.html",
+ "teaser": null
+ },{
+ "title": "3.3.176",
+ "excerpt":" 支持微软正版账户登录 支持 Authlib-injector 账户上传皮肤 支持 Authlib-injector 服务器用邮箱以外的账户登录 尝试修复在游戏启动后启动器直接关闭时导致游戏卡死的问题 修复启动器设置 HTTP 代理后,游戏无法访问网络的问题 修复下载支持库文件失败时启动器崩溃的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.176.html",
+ "teaser": null
+ },{
+ "title": "3.3.177",
+ "excerpt":" 修复下载失败导致游戏无法启动的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.177.html",
+ "teaser": null
+ },{
+ "title": "3.3.178",
+ "excerpt":" 修复不能检测 20w45a+ 以上游戏的版本号 修复同时只有一个文件在下载的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.178.html",
+ "teaser": null
+ },{
+ "title": "3.3.179",
+ "excerpt":" 修复微软账号在设置了皮肤之后不能登录的问题 修复不能显示微软账号皮肤的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.179.html",
+ "teaser": null
+ },{
+ "title": "3.3.180",
+ "excerpt":" 支持我的世界中文论坛整合包标准 修复下载失败的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.180.html",
+ "teaser": null
+ },{
+ "title": "3.3.181",
+ "excerpt":" 微软登录页添加加载进度条 修复整合包导出页无法点击下一步的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.181.html",
+ "teaser": null
+ },{
+ "title": "3.3.183",
+ "excerpt":" 修复服务端自动更新整合包不能更新游戏、Forge 版本的问题 兼容 Java11+,在 Java 11+ 上运行时会自动下载 JavaFX 修复不能识别部分数据包的问题 刷新账户时将显示进度条 上传皮肤时自动检测 Steve、Alex 模型 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.183.html",
+ "teaser": null
+ },{
+ "title": "3.3.184",
+ "excerpt":" 修复 macOS 下启动器图标和 Finder 相同的问题,仅在 Java 9+ 生效 修复与 Java 16 的兼容性问题 允许在导出的整合包内包含启动器程序 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.184.html",
+ "teaser": null
+ },{
+ "title": "3.3.186",
+ "excerpt":" 解决 Java 16 下部分 mod 不能正常运行的问题 修复对系统平台的识别错误导致部分平台不能正确下载 JavaFX 的问题 启动 Minecraft 1.17 时自动下载官方提供的 Java 16 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.186.html",
+ "teaser": null
+ },{
+ "title": "3.3.188",
+ "excerpt":" 自定义本地库路径,允许 M1 设备运行 ARM 版本的 Minecraft 自动检测系统内安装的 OpenJDK,包括 Liberica/Microsoft/Zulu/AdoptOpenJDK 修复 exe 版本不能正常下载 JavaFX 的问题 修复 Windows 下打开使用 Unicode UTF-8 提供全球语言支持选项后启动器无法打开的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.188.html",
+ "teaser": null
+ },{
+ "title": "3.3.189",
+ "excerpt":" 支持使用 Fabric 作为 Mod 加载器的 CurseForge 整合包 修复尝试下载 Java16 时只有确定没有取消按钮的问题 修复下载 Java16 时取消下载过程后启动器崩溃的问题 自动选择新添加的 Authlib-injector 服务器 修复安装整合包时可能崩溃的问题 压缩了启动器本体文件大小 修复 MCBBS 整合包实现不符合规范的问题 允许在 Minecraft 自定义参数内使用 ${game_directory} 等占位符 支持官方启动器为 Minecraft 启动参数提供的一些占位符 允许在 Java 自定义参数内覆盖启动器默认提供的启动参数,而不需要再禁止启动器生成默认参数 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.189.html",
+ "teaser": null
+ },{
+ "title": "3.3.192",
+ "excerpt":" 支持 1.17 Forge 的自动安装与游戏启动 修复不能正常启动 Minecraft 1.5 及以下版本的问题(需要手动删除 options.txt) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.192.html",
+ "teaser": null
+ },{
+ "title": "3.3.194",
+ "excerpt":" 支持 CurseForge 整合包和 Mod 下载 改进版本管理和游戏设置的界面 修复不能启动 BakaXL 安装后的游戏的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.194.html",
+ "teaser": null
+ },{
+ "title": "3.3.195",
+ "excerpt":" 添加查看模组详细介绍及打开其官方页面的功能 Mod 下载列表会按照发布时间排序 修复 Mod 下载页面存在空白区域的问题 修复操作账户时崩溃的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.195.html",
+ "teaser": null
+ },{
+ "title": "3.3.196",
+ "excerpt":" 修复进入 Mod 下载页面时崩溃的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.196.html",
+ "teaser": null
+ },{
+ "title": "3.3.197",
+ "excerpt":" 修复不能启动 Forge 1.17.1-37.0.29 及以上版本的问题 修复英文语言设置下版本管理页面的标题错误的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.197.html",
+ "teaser": null
+ },{
+ "title": "3.3.199",
+ "excerpt":" 在整合包下载页按回车也可以发起搜索 支持我的世界中文论坛整合包规范第二版,兼容 CurseForge 整合包格式,允许导入 MultiMC 重新设计关于页面 修改创建账号页面 新增赞助列表页面 修复微软登录页可能白屏的问题 修复微软登录很快过期的问题 修复错误检测 Forge 版本号以至于不能导出正确的整合包的问题 修复在主页按多次回车键会重复启动游戏的问题 修复安装整合包时没有检查名字是否符合 Windows 文件名规范的问题 修复 Forge 安装器部分内容仍需从官方源下载的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.199.html",
+ "teaser": null
+ },{
+ "title": "3.3.200",
+ "excerpt":" 修复微软登录超时后崩溃的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.200.html",
+ "teaser": null
+ },{
+ "title": "3.3.201",
+ "excerpt":" 添加帮助页面 添加修改游戏进程优先级的功能 任意页面按 ESC 键可返回上一页 支持自动选择游戏内存大小 添加 Linux 下使用系统 GLFW 及 OpenAL 的功能 添加自动选择下载源的功能 允许修改默认的下载并发数 添加单独的下载页面,额外支持资源包和存档的下载功能 更换默认背景图 调整界面外观 支持自动安装 Fabric-API(该功能尚未完成,需要在 Java 虚拟机参数中添加 -Dfabric.development 方能使用) 修复微软登录成功页乱码的问题 修复微软账号年龄不满 18 岁显示的错误信息不易于阅读等问题 修复不能启动 PCL 安装的部分游戏的问题 修复不能启动 Fabric 安装器安装的 1.18 版本的问题 修复模组下载页面没有按时间排序的问题 修复 Java 11 以上滚动条的样式问题 修复部分 Linux 发行版下不能打开微软登录页面的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.3/3.3.201.html",
+ "teaser": null
+ },{
+ "title": "3.4.202",
+ "excerpt":"更新至 JavaFX 17,额外支持 Mac M1 设备下自动下载 JavaFX Authlib-Injector 认证服务器管理页面移动至账户管理页侧边栏 支持修改离线账户的 UUID Mod 管理页面和下载页面尽可能显示 Mod 的中文名称 Mod 下载页面允许中文搜索 Mod 下载页面允许选择搜索 CurseForge 或者 Modrinth Mod 下载页面允许查看 Mod 的 MC 百科页面与 MCBBS 页面 Mod 下载页面允许选择要安装到的目标游戏版本 下载页面首页修改为游戏安装页,而不是 Mod 下载页 自动安装 Fabric-API 至新游戏的 Mod 目录 微软登录时无法自动打开浏览器时允许手动复制链接 修复微软登录时提示 NullPointerException 或者部分情况下的无法连接认证服务器的问题 修复安装新游戏失败的问题 修复自动选择内存大小后内存大小过小的问题 修复返回主页卡死的问题 修复 Mod 下载页无法显示...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.4/3.4.202.html",
+ "teaser": null
+ },{
+ "title": "3.4.203",
+ "excerpt":" 添加多人联机,由于处于试验阶段,如果出现问题请反馈 调整界面外观 背景路径支持网络链接 允许修改启动器字体 添加崩溃分析报告窗口,尽量分析崩溃信息,而不是直接打开日志窗口 Mod 下载页面按游戏版本分类 Mod 下载页面显示前置 Mod EXE 版本优先选择独立显卡 打开不检查游戏完整性选项时,同时不检查服务端自动更新整合包的更新 修复点击 Mod 列表页 Mod 文件夹按钮后不能打开正确文件夹的问题 修复下载 Mod 时无法取消的问题 修复不能正确识别 MCBBS V2 整合包的问题 修复 PATH 格式不正确时导致启动器崩溃的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.4/3.4.203.html",
+ "teaser": null
+ },{
+ "title": "3.4.205",
+ "excerpt":"添加联机房间准入功能,房主同意后玩家才能加入房间 添加联机房间管理功能,可以查看已经在房间中的玩家 添加联机 Token 设置和中继模式 联机时不再需要正版登录,但玩家必须在多人游戏页面直连 HMCL 多人联机房间 添加修改离线账户皮肤的功能,允许使用本地图片和 LittleSkin 等皮肤站 添加自动选择 Java 选项,省去提示用户需要更改 Java 版本的步骤 添加模组批量更新功能 修改页面跳转动画 支持导入由玩家手动打包的包含 .minecraft 文件夹的整合包 Fabric Mod 崩溃时提示 Mod 冲突或缺失前置 Mod 原因 在全局游戏设置中提示当前版本正在使用游戏独立设置,以避免玩家在错误的地方修改设置 支持 1.17 下 OptiFine 与 Forge 同时安装 修复由于 Java 损坏导致无法检测 Java 版本时,启动游戏卡死的问题 修复 Mojang 账号和 Authlib-Injector 账号登录时卡死,看不到密码框的问题 修复 Mojang 账号和 Authlib-Injector...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.4/3.4.205.html",
+ "teaser": null
+ },{
+ "title": "3.4.206",
+ "excerpt":" 联机: 更新 cato 至 1.0.c,支持 macOS M1 芯片设备 联机: 网络测试改用快速测试方法 联机: 添加加入申请选项,默认不再需要房主手动同意加入申请 联机: 在需要房主手动同意加入申请时,提供 30 秒超时,超时后自动拒绝申请 在调试选项下和本地目录设置下显示警告信息 离线账户皮肤选择本地文件时,允许修改人物模型为 Slim 启用标题栏透明选项时,标题栏背景色调为半透明 现启动器更新通道将与启动器本身发布为开发版或稳定版绑定,避免玩家使用开发版时因为忘记调整更新通道,不能收到后续开发版更新推送 修改页面跳转动画 修复游戏崩溃报告页面崩溃的问题 修复进入联机页面时没有下载 cato 的问题 修复离线账户皮肤选择 Blessing Skin 时,网址末尾添加斜杠会无法加载皮肤的问题 修复复制游戏实例时崩溃的问题 修复点击反馈页面空白处弹出反馈详细信息页面的问题 修复批量更新模组时,将 Forge Mod 更新为 Fabric Mod 的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.4/3.4.206.html",
+ "teaser": null
+ },{
+ "title": "3.4.207",
+ "excerpt":" 在杀毒软件删除 cato 时,弹出警告提示,而不是崩溃启动器 资源包下载页面添加版本选择 微软账号登录时被服务器要求重新手动登录时弹出登录提示框而不是登录失败 修复运行在 32 位 Java 上时不能正确提示游戏不应使用 32 位 Java 运行的问题 修复模组页、游戏下载页等页面标签错乱的问题 修复游戏崩溃报告窗口不显示内存和 Java 版本的问题 修复联机加入房间失败时将连接无法建立显示为被房主踢出的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.4/3.4.207.html",
+ "teaser": null
+ },{
+ "title": "3.4.208",
+ "excerpt":" 运行环境缺少 JavaFX 时,直接开始下载而不是等待用户选择下载源 修复联机断联的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.4/3.4.208.html",
+ "teaser": null
+ },{
+ "title": "3.4.209",
+ "excerpt":"不再翻译 id 为 examplemod 的 Mod 名称以避免歧义 如果在 macOS/Windows ARM 设备上使用 HMCL,HMCL 会优先使用 x86 的 JDK 运行游戏 提供更多预设的游戏版本图标以供设置 完善显卡驱动问题提示语 完善 Linux 用户因使用 Java9+ 版本导致游戏崩溃的提示语 导出游戏启动脚本时,可以导出 PowerShell 格式的脚本 支持游戏需要 Java 8 时提示并下载 Java 8 下载 Mod 时,可以自定义文件名称 添加透明背景选项 添加日语翻译 更新俄语翻译 兼容 TLauncher 游戏客户端 联机: 修复使用 32 位 Java 时提示多人联机不支持当前平台的问题 联机: 修复...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.4/3.4.209.html",
+ "teaser": null
+ },{
+ "title": "3.4.210",
+ "excerpt":" 提示下载 Java 时,额外提供手动下载链接 更新 cato 至 1.1.0 修复部分页面进入时崩溃的问题 修复设置系统环境变量 classpath 后游戏无法启动的问题 修复删除所有游戏文件夹配置项后崩溃的问题 修复删除游戏版本后不退出游戏设置页面的问题 修复重命名游戏版本后游戏设置页面未刷新的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.4/3.4.210.html",
+ "teaser": null
+ },{
+ "title": "3.4.211",
+ "excerpt":" 修复 Log4j 远程代码执行漏洞 修复解压 zip 文件时丢失文件属性的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.4/3.4.211.html",
+ "teaser": null
+ },{
+ "title": "3.4.212",
+ "excerpt":" 修复 Log4j 远程代码执行漏洞 修复取消启动警告框后,启动游戏进度框不退出的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.4/3.4.212.html",
+ "teaser": null
+ },{
+ "title": "3.5.0.213",
+ "excerpt":" 修复 Log4j 远程代码执行漏洞 更新 cato 至 1.2.0 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.0.213.html",
+ "teaser": null
+ },{
+ "title": "3.5.0.214",
+ "excerpt":" 重命名某个游戏版本后,该游戏版本将会被选中为当前游戏版本 修复 cato 选项名称错误的问题 修复 1.17/1.18 Forge 客户端不能启动的问题 修复在定制离线帐户皮肤后,导出的游戏脚本不能正常启动游戏的问题 修复 Mod 下载页面加载失败后点击刷新页面提示无反应的问题 修复游戏崩溃分析窗口内显示了不知道是什么库的版本号的问题 修复 Fabric-API 下载不完整的问题 修复 Fabric-API 列表中存在与游戏版本不匹配的版本的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.0.214.html",
+ "teaser": null
+ },{
+ "title": "3.5.2.216",
+ "excerpt":" 修复在包含等于号的路径下运行时无法正确加载漏洞修复工具的问题 修复 Mod 下载页选择 Modrinth 源时,排序选项不可用的问题 修复下载游戏向导中,在某些情况下加载了错误的 Fabric API 列表的问题 修复启动游戏时,如果 Java 版本不正确,某些情况下会导致启动器崩溃的问题 修复某些情况下不能更新游戏版本为 Minecraft 1.18 所安装的 Forge 修复多人联机页面在快速点击打开房间时导致启动器崩溃的问题 修复删除离线帐户使用的本地皮肤文件后游戏不能启动的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.2.216.html",
+ "teaser": null
+ },{
+ "title": "3.5.3.219",
+ "excerpt":" 支持整合包下载页使用中文搜索 支持下载安装 Modrinth 整合包 修复在语言为英文时仍翻译 Mod 名称的问题 修复离线模式帐户无法使用 LittleSkin 皮肤站的问题 修复下载 Mod 和整合包时,没有显示下载进度的问题 修复在 macOS 和 Linux 系统下不能打开模组文件路径的问题 修复部分情况下因 Zip 包编码无法检测,以致无法安装整合包的问题 修复无法启动包含 LabyMod 的游戏的问题 在系统内没有检测到 Java 时,自动尝试安装 Java,而不只提示用户手动安装 更新 cato 网站链接 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.3.219.html",
+ "teaser": null
+ },{
+ "title": "3.5.3.220",
+ "excerpt":" 修复 CurseForge 整合包无法下载安装的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.3.220.html",
+ "teaser": null
+ },{
+ "title": "3.5.3.221",
+ "excerpt":" 支持在文件管理器中显示文件,或者在 Linux 中直接打开父目录。 默认开启“自动选择合适的 Java” 修复部分 UI 问题 修复更换资源类别后不更新列表的问题 修复无法获取前置模组信息 更新翻译 修复整合包的 mcmod 网址不正确问题 修复无法将 mrpack 文件拖拽至主页面安装整合包的问题 在 JDK 安装不完整时提醒重新安装 修改微软账户上传皮肤链接 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.3.221.html",
+ "teaser": null
+ },{
+ "title": "3.5.3.222",
+ "excerpt":" 修复翻译错误 适配 Apple Silicon Mac 与龙芯平台 修复不会自动补全缺失的 OptiFine 文件的问题 更新官方下载源链接 修复 OptiFine 自动安装后启动崩溃的问题 微软账户相关调整 添加世界信息界面(允许玩家在启动器内查看更详细的世界信息以及调整一些基本设置) 修复使用 Java 9+ 编译时的错误 修复资源搜索获取信息失败相关问题 添加 Quilt 自动安装 回滚 HMCLauncher.exe ,减少杀毒软件报毒 为非 x86 平台提供开箱即用的启动支持 更新自动安装页面 修复在创建账户页面下认证服务器未知的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.3.222.html",
+ "teaser": null
+ },{
+ "title": "3.5.3.223",
+ "excerpt":" 在启动游戏时刷新账户失败时提示重试登录 修复在授权过期时不会显示重新登录对话框 微软登录相关优化 修复通过自动安装更新游戏时的崩溃 支持 Github Action 的构建产物微软登录 更多平台的原生适配 修复在找不到合适的 Java 时启动时卡住的问题 支持在 linux-loongarch64_ow 上自动下载 JavaFX 更新翻译 添加 sh 二进制文件支持 修复 Modrinth 整合包安装 更新多人联机 日志分析器显示相关优化 修复 Modrinth 格式的 Quilt 整合包安装错误 修复 Modrinth 模组包解析错误 Quilt 自动安装相关调整 修复下载 Java 链接错误 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.3.223.html",
+ "teaser": null
+ },{
+ "title": "3.5.3.227",
+ "excerpt":" 多人联机功能暂时下线维护详情 修复中文路径下启动 <= 1.12.2 的版本没有声音的问题 修复 提示弹窗 的文本显示问题 更新相关翻译 优化未存在可用的 Java 环境启动 HMCL 时的提示 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.3.227.html",
+ "teaser": null
+ },{
+ "title": "3.5.3.228",
+ "excerpt":"优化启动器资源占用 优化游戏 JVM 参数,改善游戏性能 优化高分辨率屏幕上图标的显示效果 优化微软账户登录相关提示 支持 Gif 格式背景图 在微软账户登录弹窗中添加 忘记密码 按钮 添加关于离线账户命名的提示 更新整合包、模组、资源包、世界搜索中页面游戏版本与类别标签 错误修复: 修复下载页卡顿的问题 修复自动下载 Java 相关问题 修复使用 Java 18+ 运行 Minecraft 时日志乱码的问题 修复更新模组时可能崩溃的问题 修复重复回滚 Mod 更新导致启动器崩溃的问题 修复无法正确处理带有 Quilt 的 MultiMC 整合包的问题 修复 Quilt 版本选择页未显示 Quilt 图标的问题 修复 Mcbbs 整合包中 JVM 参数覆盖版本设置的问题 修复使用 Java 8 运行时启动器标题显示 @develop@ 的问题...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.3.228.html",
+ "teaser": null
+ },{
+ "title": "3.5.3.229",
+ "excerpt":"更新整合包、模组、资源包、世界搜索中页面游戏版本标签,并修改类别的顺序 优化自动内存分配 弃用 FXML,能够便于调试修改、优化资源占用和优化启动速度 将 Little skin 更改为可选的登录选项 启动时检查 HMCL 是否在临时路径中 修改一些提示 优化 Mod 列表加载速度 优化对 Java 兼容性问题的检测 更新全部图标,改善了高分屏上图标的显示质量 在更新整合包中包含的 Mod 时弹出警告 支持导出更多崩溃日志 更新反馈页面 减小 JAR 文件体积 向非官方构建添加提示 x86-64 平台上不自动选择 32 位 Java 建议 Forge 用户使用官方推荐版本的 Java 启动游戏 默认在用户文件夹中存储账户信息,并添加 便携账户 和 全局账户 按钮切换 优化日志分析 添加模组列表搜索 新添加 JVM 选项 hmcl.home,允许用户自行指定 HMCL_DIRECTORY...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.3.229.html",
+ "teaser": null
+ },{
+ "title": "3.5.3.230",
+ "excerpt":" Quilt 相关功能完善 默认将搜索排序修改为“热度” 更新语言文件 减小 JAR 文件体积 优化性能,轻微降低内存占用 不将默认的日志行数保存到配置中,使其导出崩溃日志中的 minecraft.log 不会受其行数限制 错误修复: 修复 GIF 动图加载占用主线程的问题 修复一些崩溃问题 修复下载源选择框过长的问题 修复添加冗余 G1 参数的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.3.230.html",
+ "teaser": null
+ },{
+ "title": "3.5.4.232",
+ "excerpt":" 添加环境变量设置 添加渲染器设置 将版本高级设置拆分至单独页面中 在 Linux 上支持 MESA_LOADER_DRIVER_OVERRIDE 环境变量,适配 Zink 驱动程序 错误修复: 修复日志分析窗口的渲染问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.4.232.html",
+ "teaser": null
+ },{
+ "title": "3.5.4.234",
+ "excerpt":"拒绝在被 Fractureiser 病毒感染的设备上启动 HMCL(若检测到将会提示并退出,详情) 检测 HMCL 是否处于 macOS 上的 App Translocation(macOS 使用了 App Translocation 机制,可能会自动将 HMCL 移动至 /private/var/folders 中的临时文件夹内,导致用户关闭 HMCL 后游戏数据和设置丢失) 添加 Linux RISC-V 64 平台支持 日志分析窗口中显示物理内存大小 更新 Minecraft 购买链接 添加删除游戏资源文件按钮 优化 SSL 异常报错信息 添加更多日志分析规则 更新搜索版本号 更新游戏版本号检测性能 添加隐藏测试版提示开关 更新翻译 错误修复: 修复在 Minecraft 1.20 不能正常使用游戏内聊天功能的问题 修复在 Windows on ARM 平台上的启动问题 修复使用系统...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.4.234.html",
+ "teaser": null
+ },{
+ "title": "3.5.5.235",
+ "excerpt":"完善 Quilt 支持 添加了对 NeoForge 的支持 打开启动器时会验证 JavaFX 完整性 放弃 EXE 版本与 Windows XP 的兼容性,如果需要可以使用 JAR 版本(当前版本的 EXE 版本并未放弃,在不久的将来会构建不支持 Windows XP 的 HMCLauncher 并分发。如果是从旧版本通过启动器更新升级到最新版本,则 HMCLauncher 并不会被覆盖修改,仍然支持 Windows XP) 支持从 Modrinth 更新模组,会比对 CurseForge 和 Modrinth 取最新版本 支持在模组管理和模组搜索中显示所支持的模组加载器 支持日志窗口中的复制操作,选中要复制的行,按 Ctrl+C 即可 日志窗口默认显示行数调整至 1000 添加光影包文件夹和日志文件夹打开按钮 在离线账户创建时对不合法的账户名做出警告 游戏安装界面现在会隐藏不可用的模组加载器 现在系统 GLFW 和系统 OpenAL 也可在 Windows...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.5.235.html",
+ "teaser": null
+ },{
+ "title": "3.5.5.236",
+ "excerpt":"GP-2836: 更新启动器发布页至官网,而不是 MCBBS GP-2700: 优化游戏版本比较规则,现在模组下载界面能够正常排序 Minecraft 正式版、快照版或其他版本了 GP-2805: 默认开启自动选择并发数 GC-9361719、GC-420d77d、GP-2839: 移除 MCBBS 的下载源和鸣谢文本,介于其下载源已不再可用 GP-2801: 添加部分 CurseForge 的分类翻译文本 GP-2742: 支持在游戏崩溃提示界面显示 Fabric Loader 给出的警告信息 GP-2813: 当日志中含有部分常见报错信息时,即使进程退出代码为 0 也显示游戏崩溃提示界面 GP-2828: 支持检测 Forge 模组重复导致的游戏崩溃 GP-2834: 支持检测 Forge 安装不完整导致的游戏崩溃 GP-2785: 支持检测 JVM 堆内存不足导致的游戏崩溃 GP-2790: 支持检测 Forge 与高版本 Java 不兼容导致的游戏崩溃 GP-2760: 更新对 Linux RISC-V 64 系统的支持...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.5.236.html",
+ "teaser": null
+ },{
+ "title": "3.5.5.237",
+ "excerpt":"错误修复: GP-2840: 修复 Linux RISC-V 64 平台的支持 GP-2846: 修复使用 Java 19+ 启动游戏时,游戏 JVM 字符编码参数错误导致控制台乱码的问题 GP-2857: 修复搜索页面搜索结果为空,即总页面为 0 时点击最后一页按钮会跳转到不存在的页面导致无法正常使用的问题,现在会自动禁用该按钮 GP-2858: 修复 Windows 下自定义命令中使用 $INST_DIR 等带有反斜杠的内容会错误触发转义导致路径错误的问题 GP-2859: 修复启动器在版本 JSON 缺失 Patches 信息时无法获得游戏版本,导致游戏启动参数重复、管理版本表现不正确等问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.5.237.html",
+ "teaser": null
+ },{
+ "title": "3.5.5.238",
+ "excerpt":" GP-2864: 改善在非 Windows 平台任务栏图标的质量 错误修复: GP-2859: 修复 Forge 和 NeoForge 安装失败的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.5.238.html",
+ "teaser": null
+ },{
+ "title": "3.5.6.240",
+ "excerpt":" GP-2862: 默认不进行降级更新(手动切换更新源时依然会正常提示) GP-2888: 移除设置 - 赞助页面 GP-2889: 删除 Mojang 登录支持 GP-2897: 主界面移除联机大厅按钮,添加引导用户进入官方 QQ 群的按钮 GP-2886: 自动下载 Java 支持下载 Java 21 错误修复: GP-2869: 修复下载 Java 不会尝试备用下载源的问题 GP-2871: 修复导出启动脚本时无法正确处理“游戏启动前执行命令”和“游戏结束后执行命令”的问题,现在会预解析命令 GP-2881: 修复无法安装带有 NeoForge 的 Modrinth 整合包的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.6.240.html",
+ "teaser": null
+ },{
+ "title": "3.5.6.241",
+ "excerpt":" GP-2904、GP-2915: 更新语言文件,使表达更精确 GP-2905: 更改语言选项添加重启后生效的提示 GP-2916: 在 CurseForge 下载源中搜索时始终会按照模组标题与关键词的相似性排序 GP-2885: 在 Linux 系统上且处于未知桌面环境时,禁用删除至回收站功能 错误修复: GP-2908 [重要]: 修复微软账户登录失败的问题 GP-2804: 修复游戏非正常退出提示界面文字编码显示错误的问题 GP-2906: 修复未初始化 FileDownloadProvider 的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.6.241.html",
+ "teaser": null
+ },{
+ "title": "3.5.6.242",
+ "excerpt":" GP-2917: 不再尝试下载 .pack.xz 文件 GP-2921: 当系统属性 java.net.useSystemProxies 被设置为 false 时不再使用系统代理 GP-2856: 当加载网络背景图片超时时回退至默认背景,解决启动时卡死的问题 GP-2912: 当下载失败时,打印重定向链至日志 错误修复 GP-2919: 修复 Minecraft 1.6 之前的版本没有声音的问题 GP-2920: 修复了在 CurseForge 下载源中使用中文搜索无法呈现结果的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.6.242.html",
+ "teaser": null
+ },{
+ "title": "3.5.6.243",
+ "excerpt":" GP-2929: Modrinth 翻译文本将在缺失时显示原内容 错误修复: GP-2939: 修复游戏启动时包装命令会被添加两次的问题的问题 GP-2936: 修复无法读取远古版本版本号的问题 GP-2933: 修复高版本变更离线皮肤可能不生效的问题 GP-2928: 修复自动更新整合包导出页面教程链接错误问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.6.243.html",
+ "teaser": null
+ },{
+ "title": "3.5.7.244",
+ "excerpt":" GP-2942: 支持更多格式的版本图标 GP-2943: 添加更多默认皮肤,目前已与最新 Minecraft 保持一致 GP-2948: 优化了启动时加载语言文件的性能 错误修复: GP-2948: 修复模组下载界面展示“损坏的模组”时,语言始终为系统默认,无法跟随 HMCL 配置文件的问题 GP-2521: 添加外置登录时,应该请求并显示当前语言的外置登录服务端名称,而不是默认英文名称 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.7.244.html",
+ "teaser": null
+ },{
+ "title": "3.5.7.245",
+ "excerpt":" GP-2950: 未设置字体时会尝试从当前路径寻找 font.ttf 或 font.otf 并加载为默认字体 GP-2953: 清理残余 MCBBS 相关内容 GP-2951: 重新实现日志记录,保留最近 20 次启动的日志文件,退出时会压缩日志,并优化日志性能表现 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.7.245.html",
+ "teaser": null
+ },{
+ "title": "3.5.7.246",
+ "excerpt":" GP-2797: 添加更多日志分析规则 GP-2958: 重新加入对 MCBBS 的鸣谢 错误修复: GP-2986 [重要]: 修复微软账户登录失败的问题 GP-2980: 修复整合包下载失败提示窗标题未正确格式化的问题 GP-2984: 修复日志文件夹不存在时无法将日志写入文件的问题 GP-2989: 修复导入部分整合包失败的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.7.246.html",
+ "teaser": null
+ },{
+ "title": "3.5.7.247",
+ "excerpt":" GP-2990: 更新指向 XZ 主页的链接 GP-3017: 在 Linux 系统上删除文件至回收站增加对 Cinnamon 桌面环境的支持 GP-3042: 对日志中 Someone is closing me! 不做检测(这是正常退出的提示) GP-3045: 支持自动安装 Java 21 GP-3035: 在 macOS 环境下支持查找 Homebrew 安装的 Java GP-3031: 适配新版本 NeoForge 模组,修复部分模组无法被正确识别的问题 错误修复: GP-2994: 修复自动安装界面 NeoForge 图标在高分辨率屏幕上会很模糊的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.7.247.html",
+ "teaser": null
+ },{
+ "title": "3.5.8.248",
+ "excerpt":" GP-3023: 特定游戏设置 - 自动安装 中禁止升级或卸载由其他启动器安装的游戏组件 GP-3089: 优化 下载 - 模组 中模组版本推荐逻辑 GP-3097: 更新 Linux ARM64 支持 GP-3092: 移除 KOOK 入口 错误修复: GP-3023: 修复 1.20.4 版本 Forge 和 OptiFine 同时安装的情况下游戏无法启动的问题 GP-3027: 修复低版本游戏在开启版本隔离后没有声音的问题 GP-3028: 修复 全局游戏设置 - 版本隔离 中错误展示路径的问题 GP-3081: 修复启动器退出时卡死的问题 GP-3082: 修复整合包 NeoForge 版本识别不正确的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.8.248.html",
+ "teaser": null
+ },{
+ "title": "3.5.8.249",
+ "excerpt":" GP-3113 [重要]: 修复无法启动部分 Forge 版本的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.8.249.html",
+ "teaser": null
+ },{
+ "title": "3.5.8.250",
+ "excerpt":"GP-3121、GP-3194 [重要]: 微软登录界面对 Xbox 400 错误给予提示 GP-3197: 优化对 Linux RISC-V 64、FreeBSD x86-64 平台的支持 GP-3058: 支持解析更多游戏版本号 GP-3181: 支持使用 HMCL_FONT 环境变量指定字体 错误修复: GP-2838: 修复本地模组查看信息时标签错误的问题 GP-3066: 修复 CurseForge 搜索 API 对翻页总量计算不正确的问题;修复 下载 - 模组 切换下载源时不刷新页面的问题 GP-3114: 修复模组详情中即使无此游戏版本,仍会出现对应版本下拉栏的问题 GP-3117: 修复自动安装选项卡重新选择版本按钮消失的问题;修复 下载 - 游戏 选择游戏版本后窗口标题重复的问题;修复无法启动官方启动器安装的 1.21 的问题 GP-3126: 修复无法正确读取微软账户 Token 过期时间的问题 GP-3128: 修复 1.21 NeoForge...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.8.250.html",
+ "teaser": null
+ },{
+ "title": "3.5.8.251",
+ "excerpt":" GP-3201 [重要]: 修复 HMCL 在 Java 8 上运行时游戏安装界面卡片布局的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.8.251.html",
+ "teaser": null
+ },{
+ "title": "3.5.9.252",
+ "excerpt":" GP-3251、GP-3259: 支持从官方源下载 Forge 错误修复: GP-3224: 修复部分游戏版本无法正常安装的问题 GP-3227: 修复模组详情页图标显示问题 GP-3260: 修复部分 CurseForge 翻译缺失的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.9.252.html",
+ "teaser": null
+ },{
+ "title": "3.5.9.254",
+ "excerpt":" GP-3256: 选择要安装的 Forge 版本时显示版本发布时间 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.9.254.html",
+ "teaser": null
+ },{
+ "title": "3.5.9.255",
+ "excerpt":" GP-3233: 在 Linux/FreeBSD 平台打开日志、模组等位置时会选中该文件 GP-3274: 优化日志窗口 GP-3062: 支持从 SDKMAN! 默认目录查找可用 Java 路径 GP-3271: 隐藏版本管理的 Fabric API 和 QSL/QFAPI 自动安装选项 GP-3306: 模组等资源版本图标会根据标签自动调整样式 错误修复: GP-3142: 修复日志窗口错误地将 authlib-injector 日志识别为 ERROR 类型 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.9.255.html",
+ "teaser": null
+ },{
+ "title": "3.5.9.257",
+ "excerpt":"GP-2988: 添加 Java 管理页面,优化查找、下载、自动选择 Java 等功能 (BV1WvCUY4EwK) GP-3262: 优化模组下载页面按钮的翻译文本 GP-3313: 启动时不再检测 Fractureiser 病毒 GP-3280: 在删除账户和认证服务器时弹出确认提示 GP-3314: 优化 Linux/FreeBSD 平台上显示的系统信息 GP-3282: 发现更新弹窗添加取消按钮 GP-3321: 移除对 WebView 的依赖,使用 Jsoup 解析并渲染 HTML GP-3088: 隐藏整合包安装页面上的整合包文件位置 GP-3278: 调换游戏管理侧边栏上“自动安装”和“模组管理”的顺序 GP-3237: 设置页面添加打开启动器日志文件夹按钮 GP-3264: 在 Linux LoongArch64 平台支持 Minecraft 1.20.2+ GP-3234: 在安装新游戏版本页面的默认游戏版本名称中包含已选择的加载器名称 GP-3221: 模组管理搜索操作更改为文本更新后触发 GP-3325: 更新关于页面 错误修复: GP-3324: 修复对话框标题和按钮未使用用户字体的问题...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.9.257.html",
+ "teaser": null
+ },{
+ "title": "3.5.9.258",
+ "excerpt":" GP-3342, GP-3369, GP-3371: 优化 Java 下载功能 GP-3363: 支持下载 IBM Semeru Runtime (OpenJ9) GP-3375: 支持微软账户上传皮肤 GP-3032: 检查模组更新界面加入全选/取消全选复选框 GP-3347: 当整合包没有描述时,隐藏查看整合包描述按钮 GP-3373: 更新模组下载页游戏版本列表至 1.21.3 GP-3364: 将自动下载的 JavaFX 版本提升至 17.0.13 GP-3287: 优化文本描述 错误修复: GP-3352: 修复无法安装 zip 格式的 Java 安装包的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.9.258.html",
+ "teaser": null
+ },{
+ "title": "3.5.9.259",
+ "excerpt":" GP-3378: 优化首页公告,添加隐藏按钮 优化文本描述 错误修复: GP-3379: 修复部分按钮无法用键盘触发的问题 GP-3380: 修复部分控件响应鼠标任意按钮点击的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.9.259.html",
+ "teaser": null
+ },{
+ "title": "3.5.9.260",
+ "excerpt":" GP-3232: 支持在模组管理页面通过右键单击模组查看模组详情 GP-3396、GP-3397、GP-3406: 优化账户列表页面按钮图标 GP-3424: 调整字体选择组合框的默认宽度 GP-3427: 更新 EXE 图标 优化文本描述 错误修复: GP-3392: 修复微软账户登录对话框中“忘记密码”链接 GP-3421: 修复打开游戏设置页时启动器崩溃的问题 GP-3422: 修复模组下载对话框中点击前置模组时,对话框不会关闭的问题 GP-3423: 修复对话框按钮自行移动的问题 GP-3425: 修复 HMCLauncher 无法正确识别 Windows on Arm 平台的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.9.260.html",
+ "teaser": null
+ },{
+ "title": "3.5.9.261",
+ "excerpt":" GP-3428: 优化文本描述 错误修复: GP-3430: 修复使用高版本 Java 启动低版本游戏时提示对话框中的文本错误 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.9.261.html",
+ "teaser": null
+ },{
+ "title": "3.5.9.262",
+ "excerpt":"错误修复: GP-3308: 修复启动时自动补全 Modrinth 整合包中已禁用模组的问题 GP-3434: 修复为游戏 1.20.5+Forge 自动选择 Java 17 的问题 GP-3437: 修复“关于”页面编码错误的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.9.262.html",
+ "teaser": null
+ },{
+ "title": "3.5.9.263",
+ "excerpt":" GP-3435: 在游戏下载列表中添加 Minecraft Wiki 链接 GP-3450: 使最小化按钮居中 优化文本描述 错误修复: GP-3030: 修复导入 MultiMC 整合包时 JVM 参数未移除引号的问题 GP-3439: 修复 Minecraft 1.20.2+Forge 默认图标错误的问题 GP-3444: 修复检查模组更新失败对话框未翻译的问题 GP-3451: 修复下载整合包失败时对话框标题过长的问题 GP-3461: 修复 macOS 上点击按钮时虚拟机崩溃的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.5/3.5.9.263.html",
+ "teaser": null
+ },{
+ "title": "3.6.11.264",
+ "excerpt":" GP-3457: 实验性支持 WebP 格式的背景图片 GP-3476: 在 Linux RISC-V 平台添加 banshanjdk-8 的下载地址 错误修复: GP-3470: 修复无法读取部分 Forge 模组信息的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.11.264.html",
+ "teaser": null
+ },{
+ "title": "3.6.11.265",
+ "excerpt":" GP-3458: 降低窗口阴影质量以改善性能 GP-3484: 更新模组下载页游戏版本列表至 1.21.4 错误修复: GP-3490: 修复 OAuth 登录时轮询过于频繁的问题 GP-3464: 修复在更新日志界面无法拖动启动器窗口的问题 GP-3503: 使用 Zink 渲染器时禁用 DRI3 GC-5fd52bb: 皮肤缓存不再保存到 .minecraft 目录 GC-d5408c3: 版本特定游戏设置从全局设置复制 GC-81b3911: 修复按 ESC 键时文本框内的值没有保存的问题 GC-260f4b6: 修复输入对话框中 ESC 键不起作用的问题 GC-7d12ef6: 修复内存滑块提示被设备内存进度条覆盖的问题 GC-78e15d1: 修复游戏设置中内存没有实时刷新的问题 GC-6f53da1: 完善模组下载界面 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.11.265.html",
+ "teaser": null
+ },{
+ "title": "3.6.11.266",
+ "excerpt":" GP-3517: 游戏下载页面添加搜索功能 GP-3244: 安装新游戏/整合包时检查版本名称是否包含非 ASCII 字符 GP-3523: 模组列表页中按下 ESC 键时取消选中 GP-3536: 优化对 Linux RISC-V 64 平台的支持 优化文本描述 错误修复 GP-3252: 修复无法补全部分第三方 Minecraft 客户端游戏资源的问题 GC-56d20a5, GC-397edae: 修复 Linux 平台调整窗口大小的问题 GP-3531: 修复在 FreeBSD x86-64 平台未正确替换 LWJGL 本地库的问题 GP-3541: 修复安装 MultiMC 整合包后没有设置图标的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.11.266.html",
+ "teaser": null
+ },{
+ "title": "3.6.11.267",
+ "excerpt":" GP-3601: 更新模组数据 GP-3603: 支持临时隐藏预览版提示 GP-3610: 统一软件内日期时间格式 优化软件文案 错误修复 GP-3549: 修复 macOS 平台 HMCLauncher.sh 不会显示 Java 下载页面的问题 GP-3594: Java 下载对话框中切换包类型时不应重置版本字段 GP-3598: 修复使用自定义字体时未正确设置字重的问题 GP-3602: 修复使用系统 GLFW/OpenAL 时无法启动部分游戏版本的问题 GC-ecafc9d: 修复安装新游戏页面中组件框的高度问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.11.267.html",
+ "teaser": null
+ },{
+ "title": "3.6.11.268",
+ "excerpt":" GP-3613: 优化软件内日期时间格式 GP-3605: 添加 NeoForge 的 BMCLAPI 代理支持 错误修复 GP-3612: 修复语言设置中英语选项名称错误的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.11.268.html",
+ "teaser": null
+ },{
+ "title": "3.6.11.269",
+ "excerpt":" GP-3619: 在启动器日志中记录处理器型号(仅 Windows) GP-3620: 修改整合包下载对话框内“安装到当前版本”按钮的文本为“安装整合包”,修正对话框标题 GP-3621: 点击安装整合包时无条件关闭整合包下载对话框 GP-3625: 允许用户在「下载 → 游戏」页面搜索时调整搜索范围 GP-3629: 删除全局游戏设置页面的离线账户更换皮肤提示 GP-3628: 在版本的游戏设置中添加“复制全局游戏设置”选项 优化软件文案/翻译 错误修复: GP-3618: 修复无法识别 Intel64 架构的问题 GP-3626: 修复离线账户选择 Steve/Alex 皮肤时模型错误的问题 GP-3622: 修复在非官方支持的平台上 Minecraft 1.21 与 Sodium 不兼容的问题 GP-3638: 修复 NeoForge 版本识别错误的问题 GP-3645: 修复在 macOS 平台无法找到通过 DMG 安装的 Java 的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.11.269.html",
+ "teaser": null
+ },{
+ "title": "3.6.11.270",
+ "excerpt":"版本介绍:cv40898336 GP-3650: 点击账户卡片空白处时切换账户 GP-3442: 添加打开启动器时的窗口动画 GP-3652: 添加关闭启动器时的窗口动画 GP-3657: 添加最小化和还原启动器窗口的动画 GP-3655: 启用高帧率动画 GP-3663: 启动时尝试从 HMCL_DIRECTORY 中加载字体 GP-3665, GP-3673: 支持在世界详情页面、Java 安装页面和整合包详情对话框中双击复制信息 GP-3666, GP-3677: 禁止标题栏按钮获取焦点 GP-3668, GP-3680: 优化动画效果 优化软件文案,修订翻译 错误修复: GP-3623: 修复离线账户皮肤对话框「本地皮肤图片文件」部分选项文字被覆盖的问题 GP-3651: 当微软账户 Token 过期时应当刷新账户 GP-3653: 修复无法打开空 mca/mcr 文件的问题 GP-3654: 修复标题过长时窗口异常的问题 GP-3676: 修复对话框关闭动画缺失的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.11.270.html",
+ "teaser": null
+ },{
+ "title": "3.6.11.271",
+ "excerpt":"版本介绍:cv40935564 GP-3689: 在世界管理界面显示世界图标 GP-3675: 更新 Microsoft 应用商店链接 GP-3700: 重新限制动画帧率至 60fps GP-3701: 在 DDE 上禁用自绘窗口动画 GP-3695: 优化离线登录对话框 GP-3687: 更新全部图标至 Material Symbols GP-3711: 优化世界管理界面,新增备份世界页面 优化软件文案,修订翻译 错误修复: GP-3708: 修复更改游戏 Java 时路径显示错误的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.11.271.html",
+ "teaser": null
+ },{
+ "title": "3.6.11.272",
+ "excerpt":"版本介绍:cv41026311 GP-3717: 显示对话框时隐藏焦点 GP-3723: 在游戏崩溃界面添加滚动条 GP-3729: 为更新日志对话框添加平滑滚动 GP-3730: 为世界信息页面和版本高级设置页面背景添加半透明遮罩 GP-3736: 优化账户信息卡片的显示效果 GP-3714: 优化软件文案,修订翻译 错误修复: GP-3722: 修复备份文件路径被错误地设置为源世界路径的问题 GP-3733: 删除更新日志对话框中多余的换行符 GP-3735: 修复在 Modrinth 上获取模组版本时未正确处理 404 响应的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.11.272.html",
+ "teaser": null
+ },{
+ "title": "3.6.11.273",
+ "excerpt":"版本介绍:cv41100626 GP-3432: 优化滚动页面时的性能 (by Glavo) GP-3747: 在日志中记录编码信息 (by Glavo) GP-3749, GP-3750: 消除使用 Java 24 运行 HMCL 时控制台中的弃用警告 (by Glavo) GP-3755: 更新 macOS Dock 栏图标 (by Shulker) 错误修复: GP-3752: 修复取消导出整合包时弹出报错对话框的问题 (by Glavo) GP-3759: 修复无法解析部分 Java 版本号的问题 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.11.273.html",
+ "teaser": null
+ },{
+ "title": "3.6.12.274",
+ "excerpt":"详细版本介绍:cv41243757 GP-3247: 支持下载部分特殊版本 (by zkitefly) GP-3674: 更新链接为 Metadata 中的常量,优化代码可维护性 (by zkitefly) GP-3744: 更新模组下载页游戏版本列表至 1.21.5 GP-3781: 优化对 25w14craftmine 愚人节快照的支持 (by Glavo) GP-3734: 折叠高级设置中不适用于当前系统的选项 (by Wulian233) GP-3685: 优化软件文案,修订翻译 (by 3gf8jv4dv) 错误修复: GP-3762: 修复离线账户皮肤 cslApi 为 null 时启动器崩溃的问题 (by Glavo) GP-3769: 修复离线账户切换模型时左侧 3D 预览不会即时更新的问题 (by Burning_TNT) GP-3770: 修复 Windows 平台部分语言编码下无法打开 Minecraft 中文 Wiki...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.12.274.html",
+ "teaser": null
+ },{
+ "title": "3.6.12.275",
+ "excerpt":"详细版本介绍:cv41320419 GP-3080: 反序列化账户信息时优先将数字解析为 Long (by zly2006) GP-3481: 使用 Kala Compress 替代 commons-compress (by Glavo) GP-3799: 优化下载列表中特殊版本的版本号 (by zkitefly) GP-3800: 优化整合包导出类型选择界面 (by Wulian233) GP-3819: 将 mesa-loader-windows 更新至 25.0.3 (by Glavo) 错误修复: GP-3768: 修复模组下载界面无法正常翻页,以及类别会在切换下载源时出错的问题 (by Burning_TNT) GP-3772: 修复模组管理内“安装到当前版本”与“下载到本地文件夹”实际效果相同的问题 (by Burning_TNT) GP-3776: 修复 LiteLoader 下载相关问题 (by Burning_TNT) GP-3806: 修复 RISC-V 平台游戏识别 CPU 名称出错的问题...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.12.275.html",
+ "teaser": null
+ },{
+ "title": "3.6.12.276",
+ "excerpt":"详细版本介绍:cv41401127 GP-3834: 将 Gson 更新至 2.13.0 (by Glavo) GP-3835: 将 jsoup 更新至 1.19.1 (by Glavo) GP-3822: 统一导出和导入整合包页面样式 (by 辞庐) GP-3823: 默认限制境外地区使用离线账户功能 (by Glavo) GP-3824: 优化默认 JVM 参数 (by Glavo) GP-3830: 将模组/整合包/资源包的默认下载源调整为 Modrinth (by Burning_TNT) 错误修复: GP-3826: 修复无法正常解析 NeoForge 愚人节版本的问题 (by Burning_TNT) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.12.276.html",
+ "teaser": null
+ },{
+ "title": "3.6.12.278",
+ "excerpt":"详细版本介绍:cv41495241 GP-3840: 将 HMCLauncher 拆分至独立项目 (by Glavo) GP-3857: 将 Gradle 更新至 8.14 (by Glavo) GP-3854: 右键主页“启动游戏”按钮时展开版本列表菜单 (by Glavo) GP-3853: 优化离线账户名称中包含非 ASCII 字符时的提示 (by Glavo) 优化软件文案,修订翻译(by 3gf8jv4dv) 错误修复: GP-3856: 修复导出过长日志时可能发生 OutOfMemoryError 的问题 (by Glavo) GP-3863: 修复游戏崩溃分析窗口乱码的问题 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.12.278.html",
+ "teaser": null
+ },{
+ "title": "3.6.12.279",
+ "excerpt":"详细版本介绍:cv41864476 GP-3927: 将 JavaFX 更新至 17.0.15/24.0.1 (by Glavo) GP-3953: 更新 HMCLauncher for Windows 至 3.6.0.2 (by Glavo) GP-3860: 添加 XBox 封禁相关提示 (by 辞庐) GP-3875: 使用工作路径下的 .hmcl 文件夹存放所有配置文件 (by Glavo) GP-3876: 优化代理设置功能 (by Glavo) GP-3878: 将 OS X 重命名为 macOS (by Glavo) GP-3890: 在 Windows 平台使用 JNA 调用本机 API (by Glavo)...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.12.279.html",
+ "teaser": null
+ },{
+ "title": "3.6.12.280",
+ "excerpt":"详细版本介绍:cv41943291 GP-3979: 更新 HMCLauncher for Windows 至 3.6.0.3 (by Glavo) GP-3547: 重构 MultiMC 整合包兼容功能 (by Burning_TNT) GP-3929: 使用独立线程保存设置 (by Glavo) GP-3978: 优化原理图管理功能 (by Glavo) GP-3981: 忽略与版本 JSON 指定的 Java 相冲突的 Java 检测规则 (by Glavo) 优化软件文案,修订翻译 (by 3gf8jv4dv) 错误修复: GP-3968: 修复 Java 管理页面中无法添加 IKVM 的问题 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.12.280.html",
+ "teaser": null
+ },{
+ "title": "3.6.12.281",
+ "excerpt":"详细版本介绍:cv42015225 GP-3992: 更新 HMCLauncher for Windows 至 3.6.0.4 (by Glavo) GP-2794: 支持下载光影 (by Burning_TNT) GP-3836: 自动安装页面隐藏 mcbbs 项 (by 辞庐) GP-3974: 更新日志中仅显示本次更新内容 (by Wulian233) GP-3991: 创建世界管理页面 (by Glavo) (BV1LrMCzXERZ) GP-4003: 解析 MultiMC 整合包中未声明但在依赖链上的组件 (by Burning_TNT) GP-4004: 更新加入群组链接至 B 站专栏 (by Glavo) 优化软件文案,修订翻译 (by 3gf8jv4dv) 错误修复: GP-3995: 修复 Controller 未能读取 JAVA_VERSION_TIP...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.12.281.html",
+ "teaser": null
+ },{
+ "title": "3.6.12.282",
+ "excerpt":"详细版本介绍:cv42087635 GP-4011: 更新模组下载页游戏版本列表至 1.21.6 (by 3gf8jv4dv) 错误修复: GP-4007: 修复光影下载页面中标签名称未翻译的问题 (by Glavo) GP-4009: 修复 macOS 上无法读取 CPU 信息的问题 (by Glavo) GP-4015: 修复代码中的拼写错误 (by kfatyuip) GP-4016: 修复 MultiMC 整合包中包含相同标识符的库时无法导入的问题 (by Burning_TNT) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.12.282.html",
+ "teaser": null
+ },{
+ "title": "3.6.12.283",
+ "excerpt":"详细版本介绍:cv42221199 GP-4035: 更新模组下载页游戏版本列表至 1.21.7 (by Glavo) GP-4032: 使用 Java 8 运行时禁止更新 (by Glavo) GP-4040: 更新模组数据 (by Glavo) 优化软件文案,修订翻译 (by 3gf8jv4dv) 错误修复: 修复部分 Linux 环境中未正确选择默认字体的问题 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.12.283.html",
+ "teaser": null
+ },{
+ "title": "3.6.14.286",
+ "excerpt":"详细版本介绍:cv42361009 GP-4086: 更新 HMCLauncher for Windows 至 3.6.0.6 (by Glavo) 错误修复: GP-4065: 修复添加游戏文件夹页面缺少灰色背景的问题 (by 辞庐) GP-4069: 修复使用 JavaFX 25 EA 启动时下载界面布局错位的问题 (by Glavo) GP-4074: 修复 Windows 平台无法使用部分中文字体的问题 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.14.286.html",
+ "teaser": null
+ },{
+ "title": "3.6.15.287",
+ "excerpt":"详细版本介绍:cv42465621 GP-4078: 使用 Java 11 构建 HMCL (by Glavo) GP-4113: 更新 HMCLauncher for Windows 至 3.7.0.0 (by Glavo) GP-4085: 更新模组下载页游戏版本列表至 1.21.8 (by Glavo) GP-4118: 添加字体抗锯齿算法设置选项 (by Glavo) GP-4095, GP-4120: 更换 unlisted-versions-of-minecraft 镜像源 (by zkitefly, 8Mi_Yile) GP-3690: 优化软件文案,修订翻译 (by 3gf8jv4dv) 错误修复: GP-4096: 修复无法使用部分日志字体的问题 (by Glavo) GP-4097: 修复 InstallersPage 意外地显示滚动条的问题 (by Glavo)...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.15.287.html",
+ "teaser": null
+ },{
+ "title": "3.6.15.288",
+ "excerpt":"详细版本介绍:cv42545461 GP-4168: 将 Gradle 更新至 9.0.0 (by Glavo) GP-4064: 优化主页公告关闭按钮 (by 辞庐) GP-4088: 当离线账户名称超过 16 字符时弹出警告 (by ShulkerSakura) GP-4142: 扫描 Java 时忽略 %ProgramFiles%\\Common Files\\Oracle\\Java 中的 Java (by Glavo) GP-4145: 在 Windows 平台优先使用注册表检测 GPU (by Glavo) GP-4148: 当系统设置中禁用动画效果时关闭动画 (需要 JavaFX 22+) (by Glavo) GP-4160: 缺少 Microsoft OAuth App ID 时禁用微软账户的刷新选项 (by...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.15.288.html",
+ "teaser": null
+ },{
+ "title": "3.6.15.290",
+ "excerpt":"详细版本介绍:cv42726031 GP-3205: 支持设置背景的不透明度 (by 吞云) GP-3230: 模组管理页面支持根据更多数据搜索模组 (by zkitefly) GP-3716: 支持导出 Modrinth 整合包 (by zkitefly) GP-4051: 导出启动日志时额外导出近五次启动的日志 (by zkitefly) GP-4141, GP-4264: 优化游戏下载页面 (by Glavo) GP-4181: 统一转义 URI 中的特殊字符 (by Glavo) GP-4184: 支持纯色背景 (by Glavo) GP-4201: 为弹窗文本添加平滑滚动 (by 辞庐) GP-4203: 智能选择 popup 弹出位置 (by ENC_Euphony) GP-4205, GP-4210: 支持 APNG 动图 (by...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.15.290.html",
+ "teaser": null
+ },{
+ "title": "3.6.16.291",
+ "excerpt":"详细版本介绍:cv42815084 GP-4274: 更新 chunkbase 种子地图链接 (by Wulian233) GP-4275: 基于实际屏幕分辨率添加游戏窗口分辨率选项 (by Wulian233) GP-4276: 优化版本号排序规则 (by Glavo) GP-4282: 支持解析 Indev 版本号 (by Glavo) GP-4285, GP-4292, GP-4297, GP-4301, GP-4306, GP-4310: 优化 TaskListPane (by Glavo) GP-4293: 在 macOS 上禁止最大化和全屏模式 (by Glavo) GP-4323: HintPane 使用新版 Bootstrap 调色盘 (by 辞庐) GP-4329: 将 URI 中的错误代理对编码为 U+FFFD (by...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.16.291.html",
+ "teaser": null
+ },{
+ "title": "3.6.16.292",
+ "excerpt":"详细版本介绍:cv42887511 添加文言文翻译 (by Glavo, Andypsl8, Wulian233) (BV1vNh9zqEEP) GP-4346: 添加乌克兰语翻译 (by BANSAFAn) GP-4294: 游戏崩溃窗口中增加对拍照的提醒 (by YuChuXi) GP-4311: 使用 Java 11 打开启动器时显示弃用警告 (by Glavo) GP-4338: 不对回环地址应用代理 (by Glavo) GP-4340: 增加 TaskListPane 中任务条目之间的间距 (by Glavo) GP-4341: 更严格地检测文件名合法性 (by Glavo) GP-4342: 导出启动器日志时解压旧日志 (by Burning_TNT) GP-4349: 启动游戏时隐藏 GameAssetDownloadTask (by Glavo) GP-4353: 优化自动切换游戏语言功能 (by Glavo) 错误修复:...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.16.292.html",
+ "teaser": null
+ },{
+ "title": "3.6.16.293",
+ "excerpt":"详细版本介绍: cv42962968 GP-4272: 支持自动安装 Cleanroom (by 辞庐, zkitefly) GP-4370: 优化 Linux/FreeBSD 平台的默认中文字体查询机制 (by Glavo) GP-4372: 优化 Minecraft Wiki 跳转功能 (by Glavo) GP-4376: 将「版本」重命名为「实例」(by 3gf8jv4dv) GP-4379: 增强本地化支持 (by Glavo) GP-4387: 优化文言文翻译 (by dovisutu, 物灵, Bei Dou, 繁繁芙芙, Kaohaaa, 365KW, Andypsl8, Au0727, threwd, vinds476283) GP-4388: 更新 microsoft_auth.html (by Glavo) GP-4394: 重构 Config...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.16.293.html",
+ "teaser": null
+ },{
+ "title": "3.6.17.294",
+ "excerpt":"详细版本介绍: cv43036782 GP-4452: 使用 Java 17 构建 HMCL (by Glavo) GP-4415: 序列化不透明的 Color 时省略 Alpha 通道的值 (by Glavo) GP-4413: 文言时间使用古代时辰格式 (by Glavo) GP-4439: 更新模组和整合包数据 (by Glavo) GP-4414: 检测到配置文件由高版本启动器创建时禁止保存配置文件 (by Glavo) GP-4455: 优化对于 ISO 639-3 语言代码的支持 (by Glavo) GP-4467: 在标签文本溢出时使用 Tooltip 显示完整文本 (需要 JavaFX 23+) (by Glavo) 错误修复: GP-4437: 修复 backgroundType...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.17.294.html",
+ "teaser": null
+ },{
+ "title": "3.6.17.296",
+ "excerpt":"详细版本介绍: cv43101143 GP-4454: 将默认 JavaFX 版本更新至 21.0.8/25 (by Glavo) GP-4490: 将 Gson 更新至 2.13.2 (by Glavo) GP-4263: 世界管理页面新增删除世界功能 (by Wulian233) GP-4474: 主页下载选项卡的 Tooltip 中添加光影下载相关说明 (by Wulian233) GP-4487: 在未启用 JIT 或硬件渲染加速的环境中启动时弹出提示 (by Glavo) GP-4462: 缓存文件时遵循 Cache-Control 标头的配置 (by Glavo) GP-4502: 从 java.io.File 迁移至 NIO (by Glavo) GP-4506: 使用 Java 25 启动游戏时默认开启压缩对象头...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.17.296.html",
+ "teaser": null
+ },{
+ "title": "3.6.18.297",
+ "excerpt":"详细版本介绍: cv43205532 GP-4520: 将 Gradle 更新至 9.1.0 (by Glavo) GP-4549: 将 JNA 更新至 5.18.0 (by Glavo) GP-4509: 支持在“实例管理”按钮上通过滚动滚轮切换游戏实例 (by Glavo) GP-4525: 优化本地化支持 (by Glavo) GP-4527: 支持颠倒的英语 (by Glavo) GP-4532: 将 boot.properties 翻译至西班牙语 (by 3gf8jv4dv) GP-4546: 重构 FetchTask 以使用 HttpClient 和虚拟线程 (by Glavo) 优化软件文案,修订翻译 (by 3gf8jv4dv) 错误修复: GP-4296: 修复切换下载源后需要重启启动器才会生效的问题 (by Glavo)...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.6/3.6.18.297.html",
+ "teaser": null
+ },{
+ "title": "3.7.0.300",
+ "excerpt":"详细版本介绍: cv43252149 GP-4215: 在启动器中内置 Terracotta | 陶瓦联机 (by Burning_TNT) Terracotta | 陶瓦联机 是第三方提供的开源免费联机工具,基于 EasyTier 开源项目开发。 我们基于该工具为所有用户免费提供开箱即用的联机功能。 详情请参见这篇文章: HMCL x Terracotta | 陶瓦联机全面开放 GP-4566: 更新模组下载页游戏版本列表至 1.21.9 (by 3gf8jv4dv) GP-3229: 优化模组管理布局 (by zkitefly) GP-4521: 支持通过环境变量控制 UI 缩放比例 (by Glavo) GP-4577: 优化对颠倒的英语的支持 (by Glavo) GP-4592: 更新中文(文言)环境中其他语言名称的译法 (by 3gf8jv4dv) 错误修复: GP-4568: 修复在短时间内连续点击“行按钮”只会更改一次状态的问题 (by 辞庐)...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.7/3.7.0.300.html",
+ "teaser": null
+ },{
+ "title": "3.7.0.301",
+ "excerpt":"详细版本介绍: cv43345643 GP-4608: 更新陶瓦联机至 0.3.10 (by Burning_TNT) GP-4617: 更新 authlib-injector 至 1.2.6 (by 辞庐) GP-4626: 更新模组下载页游戏版本列表至 1.21.10 (by Glavo) GP-4621, GP-4636, GP-4638, GP-4659: 优化模组管理页面 (by Glavo) GP-4641, GP-4652, GP-4654, GP-4658: 支持读取更多模组的元数据 (by Glavo) GP-3231: 优先使用模组名称匹配模组翻译 (by Zkitefly) GP-4601: 在全局设置中储存是否曾向用户展示过陶瓦联机用户须知 (by Burning_TNT) GP-4609: 隐藏空的陶瓦联机玩家列表 (by Burning_TNT) GP-4611: 更新陶瓦联机时显示反馈收集表 (by Burning_TNT) GP-4622:...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.7/3.7.0.301.html",
+ "teaser": null
+ },{
+ "title": "3.7.0.302",
+ "excerpt":"详细版本介绍: cv43370363 错误修复: GP-4665: 排序模组时忽略文件名大小写 (by Glavo) GP-4674: 修复不在场景中的按钮尝试取消自身焦点时触发 NPE 的问题 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.7/3.7.0.302.html",
+ "teaser": null
+ },{
+ "title": "3.8.0.303",
+ "excerpt":"详细版本介绍: cv43416106 GP-4681: 将 HMCLauncher 更新至 3.7.0.1 (by Glavo) GP-4682: 将陶瓦联机更新至 0.3.10 (by Burning_TNT) GP-4688: 调整陶瓦联机界面左侧按钮 (by Glavo) GP-4686: 优化陶瓦联机用户须知对话框 (by Glavo) GP-4695: 删除 VersionPage.Skin 中未使用的 BorderPane (by Glavo) GP-4694: 优化 Task 的资源占用 (by Glavo) GP-4687: 优化陶瓦联机的复制邀请码功能 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.8/3.8.0.303.html",
+ "teaser": null
+ },{
+ "title": "3.8.0.304",
+ "excerpt":"详细版本介绍: cv43498590 GP-4675: 通过解析 IANA 语言子标签注册表增强本地化功能 (by Glavo) GP-4700: 当且仅当用户位于中国大陆地区时尝试从镜像源下载陶瓦联机 (by Burning_TNT) GP-4705: 在陶瓦联机界面的启动游戏按钮中显示当前实例名称 (by Glavo) GP-4703: 优化更新日志展示功能 (by Glavo) GP-4709: 本地化下载速度显示 (by Glavo) GP-4712: 优化软件文案,修订翻译 (by 3gf8jv4dv) GP-4697: 优化没有可启动的游戏时的提示 (by Glavo) GP-4696: 在外部链接按钮上安装 Tooltip (by neveler) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.8/3.8.0.304.html",
+ "teaser": null
+ },{
+ "title": "3.8.0.305",
+ "excerpt":"详细版本介绍: cv43527381 GP-4724: Bump Terracotta to 0.3.12 (by Burning_TNT) GP-4698: 在被打包为 macOS App 时不设置 macOS Dock 栏图标 (by YiZhiMCQiu) GP-4727: 将官方群组入口重新移动到主界面 (by Glavo) 错误修复: GP-4721: 修复 JFXListViewSkin 创建大量平台线程的问题 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.8/3.8.0.305.html",
+ "teaser": null
+ },{
+ "title": "3.8.0.306",
+ "excerpt":"详细版本介绍: cv43585405 GP-4723: 将陶瓦联机更新至 0.3.13 (by Burning_TNT) GP-4742: 更新 Chunkbase 种子地图链接 (by Wulian233) GP-4735: 在不支持的平台上打开陶瓦联机页面时弹出提示 (by Glavo) GP-4734: 调整模组管理页面“模组文件夹”按钮的文本 (by 3gf8jv4dv) GP-4743: 优化检查更新日志的方式 (by Glavo) GP-4749: 恢复对 JavaFX 14 的兼容性 (by Glavo) 错误修复: GP-4736: 修复 FreeBSD x86-64 平台上错误地将所有版本视作未经测试的版本的问题 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.8/3.8.0.306.html",
+ "teaser": null
+ },{
+ "title": "3.8.0.307",
+ "excerpt":"详细版本介绍: cv43667929 GP-4770: 更新模组数据 (2025-11-07) (by Glavo) GP-4767: 添加对 25w45a_unobfuscated 的支持 (by Glavo) GP-4760: 从注册表中读取 Windows 版本信息 (by Glavo) GP-4540: 删除实例失败时弹出对话框 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.8/3.8.0.307.html",
+ "teaser": null
+ },{
+ "title": "3.8.0.310",
+ "excerpt":"详细版本介绍: cv43826997 GP-4780, GP-4790, GP-4803, GP-4815: 优化界面动画效果 (by Glavo) GP-4829: 添加对 1.21.11-pre1/2_unobfuscated 的支持 (by mineDiamond) GP-4796: 将 Gradle 更新至 9.2.0 (by Glavo) GP-4798: 将 jsoup 更新至 1.21.2 (by Glavo) GP-4799: 将 JNA 更新至 5.18.1 (by Glavo) GP-4838: 将陶瓦联机更新至 0.3.14 (by Burning_TNT) GP-4782: 添加对 25w46a_unobfuscated 的支持 (by Glavo) GP-4779: 预加载页面以减少动画卡顿 (by...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.8/3.8.0.310.html",
+ "teaser": null
+ },{
+ "title": "3.9.0.311",
+ "excerpt":"详细版本介绍: cv43951420 GP-4835: 更新至 Material Design 3 颜色系统 (by Glavo) GP-4837: 实验性支持阿拉伯语 (by Hommam-Prom) GP-4845: 更新 AMD 显卡信息数据 (by 辞庐) GP-4865: 使用 JFXColorPicker 代替 ColorPicker (by Glavo) GP-4856: 优化下载源选择逻辑 (by Glavo) GP-4788: 优化模组下载对话框文本翻译 (by 3gf8jv4dv) GP-4886: 优化对 Linux MIPS64el 平台的支持 (by Glavo) GP-4870: 添加对 1.21.11-pre3_unobfuscated 的支持 (by mineDiamond) GP-4869: 在陶瓦联机页面向非中国内地用户添加提示框...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.9/3.9.0.311.html",
+ "teaser": null
+ },{
+ "title": "3.9.0.313",
+ "excerpt":"详细版本介绍: cv44304232 GP-4992: 将 authlib-injector 更新至 1.2.7 (by Burning_TNT) GP-4144: 添加输出游戏调试日志选项 (by 辞庐) GP-4475: 添加资源包管理功能 (by 辞庐) GP-4899, GP-4903, GP-4912, GP-4910, GP-4947, GP-4943, GP-4948, GP-4952, GP-4953: 优化深色模式支持 (by Glavo, Wulian233) GP-4915: 在 HintPane 提示框中为图标和文本添加间距 (by neveler) GP-4917: 适配 Minecraft 新版本号规则 (by Glavo) GP-4911, GP-4963: 添加对 1.21.11_unobfuscated 及其预发布版的支持 (by mineDiamond) GP-4854:...","categories": [],
+ "tags": [],
+ "url": "/changelogs/dev/3.9/3.9.0.313.html",
+ "teaser": null
+ },{
+ "title": "3.10.1",
+ "excerpt":"详细版本介绍 (Bilibili) 启动器 GP-4289: 在添加游戏目录页面选择目录时自动填写名称 (by Dime, 辞庐, Glavo) GP-4882: 取消部分控件的连点限制 (by 辞庐) GP-5024: 使用副标题显示重启生效提示 (by neveler) GP-5032: 优化文本输入对话框体验 (by mineDiamond) GP-5035: 在非 Windows 平台也将文件名中的 : 视为非法字符 (by 辞庐) GP-5056: 优化列表滚动时的性能 (by Glavo) GP-5060: 优化独立窗口中对话框的样式 (by 辞庐) GP-5062: 更新 NBT 标签图标 (by mineDiamond) GP-5077: 优化设置页面内边距 (by neveler) GP-5082: 更新关于页面的版权年份至 2026...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.10/3.10.1.html",
+ "teaser": null
+ },{
+ "title": "3.10.2",
+ "excerpt":"详细版本介绍 (Bilibili) 世界管理 GP-5198: 将世界管理界面“生成启动脚本”按钮折叠到二级菜单 (by Glavo) 错误修复 GP-5239: 修复下载页面滚动时图标未及时更新的问题 (by Glavo) GP-5243: 修复实例列表中可能意外出现水平滚动条的问题 (by OrzMiku) GP-5251: 修复自动安装界面卡片上按钮无法点击的问题 (by OrzMiku) GP-5257: 修复 Cleanroom 本地安装完成后会删除安装器的问题 (by 辞庐) GP-5261: 修复下载页面选择游戏版本对话框包含 _unobfuscated 版本的问题 (by Glavo) GP-5262: 修复使用 GIF 背景时调整背景不透明度导致启动器崩溃的问题 (by Glavo) GP-5267: 修复 Unzipper 解压空 zip 文件时抛出异常的问题 (by Glavo) GP-5305: 修复返回页面时可能卡进空白页面的问题 (by 辞庐)...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.10/3.10.2.html",
+ "teaser": null
+ },{
+ "title": "3.10.3",
+ "excerpt":"详细版本介绍 (Bilibili) 联机 GP-5504: 修复陶瓦联机无法正常使用的问题 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.10/3.10.3.html",
+ "teaser": null
+ },{
+ "title": "3.10.4",
+ "excerpt":"详细版本介绍 (Bilibili) 错误修复 GP-5265: 修复未正确为游戏设置 java.net.useSystemProxies JVM 参数的问题 (by Xirren) GP-5508: 修复部分请求头中 Accept-Language 字段包含 Java 版本的问题 (by Glavo) GP-5550: 修复安装整合包时任务弹窗可能空白的问题 (by 辞庐) GP-5585: 修复下载源失效时刷新版本列表不会回退到备用下载源的问题 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.10/3.10.4.html",
+ "teaser": null
+ },{
+ "title": "3.11.1",
+ "excerpt":"详细版本介绍 (Bilibili) 启动器 GP-5391: 将 XZ for Java 更新至 1.11 (by Glavo) GP-5390: 将 TwelveMonkeys 更新至 3.13.0 (by Glavo) GP-5392: 将 Gradle Shadow 插件更新至 9.3.1 (by Glavo) GP-4733: 导出日志时允许重名文件 (by Glavo) GP-5172: 支持通过拖动标题栏退出最大化 (by neveler) GP-5259, GP-5272: 优化非法路径检查 (by 辞庐) GP-5273: 优化游戏代理参数设置 (by Glavo) GP-5274: 对 Java 26 默认启用压缩对象头 (by...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.11/3.11.1.html",
+ "teaser": null
+ },{
+ "title": "3.11.2",
+ "excerpt":"详细版本介绍 (Bilibili) 账户 GP-5610: 优化设备代码流登录流程 (by Glavo) 错误修复 GP-5550: 修复安装整合包时任务弹窗可能空白的问题 (by 辞庐) GP-5549: 修复微软登录报错的超链接显示 (by Xirren) GP-5584: 修复打开登录微软对话框时加载指示器一闪而过的问题 (by 辞庐) GP-5585, GP-5602: 修复下载源失效时刷新版本列表不会回退到备用下载源的问题 (by Glavo) GP-5575: 修复无法使用授权代码流登录微软账户的问题 (by 辞庐) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.11/3.11.2.html",
+ "teaser": null
+ },{
+ "title": "3.2.130",
+ "excerpt":"启动器 在启动器更新时显示更新日志 启动前检查是否是 Java 8~10 https://www.huangyuhui.net/index.php/2019/01/27/83/支持整合包自带 Java 运时 在缓存目录无效时自动更改设置 在登录对话框中添加注册链接 将游戏依赖的动态链接库解压到 .minecraft 中而不是系统临时文件夹 更新 authlib-injector 自动安装 只从 BMCLAPI 获取 Forge、OptiFine 列表 添加 BMCLAPI 赞助信息 支持 Forge 1.13 的自动安装 支持 Forge、LiteLoader、OptiFine 的手动更新 添加提示部分版本的 Forge 和 LiteLoader 不兼容的问题 下载库文件失败时提供更友好的提示 安装游戏时更新资源文件 启动时下载缺失的 Minecraft 本体文件 在安装游戏失败时删除不完全的游戏 游戏管理 支持对 Fabric 模组的管理 支持数据包列表页面、模组管理面板多选 添加刷新模组列表的按钮 在未安装 Mod...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.2/3.2.130.html",
+ "teaser": null
+ },{
+ "title": "3.2.139",
+ "excerpt":"启动器 添加西班牙语,更新英语、俄语翻译 主页面按回车键启动游戏 游戏列表内点击列表项进入游戏设置,右键列表项打开游戏管理菜单 不再强制使用 java.exe 日志窗口允许关闭自动滚动 避免安装游戏时输入的游戏名称不符合 Windows 系统要求 修复输入某些错误的 Java 路径时崩溃的问题 修复浏览 Mod 列表可能出现的崩溃问题 修复无法识别 Java 12、13 的问题 自动安装 添加 Fabric 自动安装 新安装的游戏可以修改游戏版本 修复 OptiFine 自动安装 修复同时安装 Forge 和 OptiFine 自动安装失败的问题 修复某些情况下无法安装 1.12.2 及以下版本的 Forge 的问题 修复导出整合包导入时无法安装 1.13 Forge 和 OptiFine 的问题 修复部分情况下无法下载 Forge 安装包的问题 修复无法安装 1.14 和...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.2/3.2.139.html",
+ "teaser": null
+ },{
+ "title": "3.2.149",
+ "excerpt":"启动器 改进部分错误提示 更新繁体中文语言文件 在主界面账户栏添加鼠标滚轮便捷切换游戏账户 在主界面账户栏添加鼠标悬浮提示以查看完整游戏名 修复原版游戏用熔炉图标标识的问题 修复无法取消启动过程和安装过程的问题 修复无法启动使用 Vivecraft 安装器新安装的游戏的问题 修复启动 1.15 时不会停止等待的问题 修复 Windows 下导出启动脚本对双引号的错误转义 修复部分正版账号登录 1.7.10 会导致游戏崩溃的问题 修复关闭 JVM 检查时仍然会检查 java.exe 是否合法的问题 修复使用 BMCLAPI 不能下载 authlib-injector 和加载游戏列表的问题 自动安装 添加 MCBBS 下载源 在资源索引文件不合法时尝试重新下载 添加 Fabric 的 BMCLAPI 和 MCBBS 下载源支持 现官方下载源下载 Forge 时依赖文件不再强制从 BMCLAPI 下载 修复重复下载游戏依赖文件的问题 整合包 导出整合包时将剔除所有日志文件和 CustomSkinLoader...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.2/3.2.149.html",
+ "teaser": null
+ },{
+ "title": "3.3.172",
+ "excerpt":"启动器 修改界面 更新俄语翻译 改善游戏下载速度 添加复制游戏实例功能 添加清理缓存文件夹按钮 修改默认下载源为 MCBBS 提升与 ServerSync 的兼容性 添加为正版账号上传皮肤的功能 支持调整并记住启动器窗口大小 在日志窗口添加导出游戏日志功能 现在会校验资源索引文件的完整性 现在启动器代理设置对启动后的游戏有效 在启动游戏、安装游戏等界面显示总下载速度 游戏崩溃后显示游戏崩溃报告而不是游戏日志 允许在启动游戏按钮上滑动鼠标滚轮切换游戏 在删除 Mod、世界、数据包时弹出删除确认提示 允许使用在启动器同目录下的 authlib-injector.jar 文件 在游戏崩溃后的第二次启动时自动检查资源和支持库文件是否完整 添加启动器的 JVM 参数 -Dhmcl.font.override=fontfamily 以允许 Linux 用户更换字体以解决白屏问题 修复部分整合包无法修改启动时游戏窗口大小的问题 修复终止游戏后启动器不会停止等待的问题 修复 1.5.2 及以下版本不能下载资源文件的问题 修复某些情况下启动游戏时,启动器会崩溃的问题 修复进入游戏设置后无法重命名部分游戏版本的问题 修复不能在 Java 17 下载 Forge 和自动更新的问题 修复重命名版本时,输入不合法的新名字后的错误提示 修复重命名被依赖的版本后,会破坏其他依赖这个版本的版本的问题 修复在自定义游戏运行目录时,输入不合法的路径会导致崩溃的问题 修复在输入特定错误的 authlib-injector...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.3/3.3.172.html",
+ "teaser": null
+ },{
+ "title": "3.3.188",
+ "excerpt":"启动器 修改界面 更新俄语翻译 改善游戏下载速度 添加复制游戏实例功能 支持微软正版账户登录 自动设置游戏的默认语言为中文 兼容 Java11+,在 Java 11+ 上运行时会自动下载 JavaFX 配置文件会优先选择启动器同目录而不是工作目录 支持 Authlib-injector 账户上传皮肤 支持 Authlib-injector 服务器用邮箱以外的账户登录 上传皮肤时自动检测 Steve、Alex 模型 刷新账户时将显示进度条 自定义本地库路径,允许 M1 设备运行 ARM 版本的 Minecraft 启动 Minecraft 1.17 时自动下载官方提供的 Java 16 允许第三方修改 HMCL 的 BMCLAPI 下载源,从而支持第三方下载源 自动检测系统内安装的 OpenJDK,包括 Liberica/Microsoft/Zulu/AdoptOpenJDK 修复启动 Minecraft 1.0 时不会停止等待游戏启动的问题 修复首次打开整合包会弹出 3...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.3/3.3.188.html",
+ "teaser": null
+ },{
+ "title": "3.5.3",
+ "excerpt":"启动器 支持多人联机 自动选择新添加的 Authlib-injector 服务器 添加修改离线账户皮肤的功能,允许使用本地图片和 LittleSkin 等皮肤站 自动检测系统内安装的 OpenJDK,包括 Liberica/Microsoft/Zulu/AdoptOpenJDK 允许修改启动器字体 游戏崩溃时提供崩溃分析报告 添加帮助页面 更换默认背景图 修复微软登录页可能白屏的问题 任意页面按 ESC 键可返回上一页 修复启动器打开时提示找不到 DST ROOT CA X3 证书的问题 修复对系统平台的识别错误导致部分平台不能正确下载 JavaFX 的问题 修复 Log4j 远程代码执行漏洞 游戏启动 支持官方启动器为 Minecraft 启动参数提供的一些占位符 兼容 TLauncher 游戏客户端 如果在 macOS/Windows ARM 设备上使用 HMCL,HMCL 会优先使用 x86 的 JDK 运行游戏 解决 Java...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.5/3.5.3.html",
+ "teaser": null
+ },{
+ "title": "3.5.4",
+ "excerpt":"启动器 多人联机功能暂时下线维护 详情 不再支持添加 Mojang 账户 迁移至微软账户 默认在用户文件夹中存储账户信息,提高安全性 优化性能与资源占用,解决卡顿问题 优化文本提示 优化自动内存分配功能 优化游戏 JVM 参数,改善游戏性能 优化自动选择 Java 功能 优化自动下载 Java 功能 优化微软账户登录功能 支持 Gif 格式背景图 优化高分辨率屏幕上图标的显示效果 更新反馈页面 默认加入 Little Skin 登录选项 为 Linux 提供 sh 格式构建 新添加 JVM 选项 -Dhmcl.home,允许用户自行指定 HMCL_DIRECTORY 下载 支持整合包下载页使用中文搜索 支持下载安装 Modrinth 整合包 支持 Quilt 自动安装 默认将搜索排序修改为“热度” 游戏设置...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.5/3.5.4.html",
+ "teaser": null
+ },{
+ "title": "3.5.5",
+ "excerpt":"启动器 拒绝在被 Fractureiser 病毒感染的设备上启动 HMCL(若检测到将会提示并退出,详情) 检测 HMCL 是否处于 macOS 上的 App Translocation(macOS 使用了 App Translocation 机制,可能会自动将 HMCL 移动至 /private/var/folders 中的临时文件夹内,导致用户关闭 HMCL 后游戏数据和设置丢失) 日志分析窗口中显示物理内存大小 更新 Minecraft 购买链接 优化 SSL 异常报错信息 添加更多日志分析规则 更新游戏版本号检测性能 添加隐藏测试版提示开关 在 Linux 上支持 MESA_LOADER_DRIVER_OVERRIDE 环境变量,适配 Zink 驱动程序 更新翻译 下载 更新搜索版本号 游戏设置 添加删除游戏资源文件按钮 将版本高级设置拆分至单独页面中 添加环境变量设置 添加渲染器设置 跨平台 添加 Linux...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.5/3.5.5.html",
+ "teaser": null
+ },{
+ "title": "3.5.6",
+ "excerpt":"GP-2864: 改善在非 Windows 平台任务栏图标的质量 GP-2859: 修复 Forge 和 NeoForge 安装失败的问题 GP-2840: 修复 Linux RISC-V 64 平台的支持 GP-2846: 修复使用 Java 19+ 启动游戏时,游戏 JVM 字符编码参数错误导致控制台乱码的问题 GP-2857: 修复搜索页面搜索结果为空,即总页面为 0 时点击最后一页按钮会跳转到不存在的页面导致无法正常使用的问题,现在会自动禁用该按钮 GP-2858: 修复 Windows 下自定义命令中使用 $INST_DIR 等带有反斜杠的内容会错误触发转义导致路径错误的问题 GP-2859: 修复启动器在版本 JSON 缺失 Patches 信息时无法获得游戏版本,导致游戏启动参数重复、管理版本表现不正确等问题 GP-2836: 更新启动器发布页至官网,而不是 MCBBS GP-2700: 优化游戏版本比较规则,现在模组下载界面能够正常排序 Minecraft 正式版、快照版或其他版本了 GP-2805: 默认开启自动选择并发数 GC-9361719、GC-420d77d、GP-2839: 移除...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.5/3.5.6.html",
+ "teaser": null
+ },{
+ "title": "3.5.7",
+ "excerpt":"启动器 GP-2929、GP-2904、GP-2915: 更新翻译 GP-2905: 更改语言选项添加重启后生效的提示 GP-2885: 在 Linux 系统上且处于未知桌面环境时,禁用删除至回收站功能 GP-2889: 删除 Mojang 登录支持 GP-2897: 主界面移除联机大厅按钮,添加引导用户进入官方 QQ 群的按钮 GP-2888: 移除设置 - 赞助页面 GP-2862: 默认不进行降级更新(手动切换更新源时依然会正常提示) 下载 GP-2921: 允许使用系统属性禁用系统代理 GP-2917: 不再尝试下载 .pack.xz 文件 GP-2921: 当系统属性 java.net.useSystemProxies 被设置为 false 时不再使用系统代理 GP-2912: 当下载失败时,打印重定向链至日志 GP-2916: 在 CurseForge 下载源中搜索时始终会按照模组标题与关键词的相似性排序 GP-2886: 自动下载 Java 支持下载 Java 21 外观 GP-2856:...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.5/3.5.7.html",
+ "teaser": null
+ },{
+ "title": "3.5.8",
+ "excerpt":" 启动器 GP-2947: 更新模组和整合包翻译信息 GP-2951: 优化了启动器长期运行后的性能表现 GP-2942: 游戏版本的图标现在支持 JPG、GIF 等格式 GP-2950: 启动器启动后,将自动加载同目录下的 font.ttf 或 font.otf 下载 GP-2958: 还原对 MCBBS 的鸣谢。谢谢你,MCBBS! GP-3031: 适配新版本 NeoForge 模组,修复部分模组无法被正确识别的问题 GP-3045: 支持自动安装 Java 21 错误修复 GP-2943: 修复了高版本启动器内皮肤预览与游戏内真实皮肤不匹配的问题 GP-2986: 修复了微软登录部分情况下会错误提示“没有购买记录”的问题 GP-2989: 修复部分情况下,整合包导入会失败的问题 GP-2994: 修复自动安装界面 NeoForge 图标在高分辨率屏幕上会很模糊的问题 ","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.5/3.5.8.html",
+ "teaser": null
+ },{
+ "title": "3.5.9",
+ "excerpt":"启动器 GP-3121、GP-3194: 微软登录界面对 Xbox 400 错误给予提示 GP-3097: 更新 Linux ARM64 支持 GP-3197: 优化对 Linux RISC-V 64、FreeBSD x86-64 平台的支持 GP-3058: 支持解析更多游戏版本号 GP-3092: 移除 KOOK 入口 下载 GP-3023: 特定游戏设置 - 自动安装 中禁止升级或卸载由其他启动器安装的游戏组件 GP-3089、GP-3114: 优化 下载 - 模组 中模组版本推荐逻辑 外观 GP-3181: 支持使用 HMCL_FONT 环境变量指定字体 错误修复 GP-2838: 修复本地模组查看信息时标签错误的问题 GP-3023: 修复 1.20.4 版本 Forge 和...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.5/3.5.9.html",
+ "teaser": null
+ },{
+ "title": "3.6.11",
+ "excerpt":"启动器 GP-3233: 在 Linux/FreeBSD 平台打开日志、模组等位置时会选中该文件 GP-3274: 优化日志窗口 GP-2988: 添加 Java 管理页面,优化查找、下载、自动选择 Java 等功能 (BV1WvCUY4EwK) GP-3280: 在删除账户和认证服务器时弹出确认提示 GP-3314: 优化 Linux/FreeBSD 平台上显示的系统信息 GP-3282: 发现更新弹窗添加取消按钮 GP-3237: 设置页面添加打开启动器日志文件夹按钮 GP-3264: 在 Linux LoongArch64 平台支持 Minecraft 1.20.2+ GP-3234: 在安装新游戏版本页面的默认游戏版本名称中包含已选择的加载器名称 GP-3221: 模组管理搜索操作更改为文本更新后触发 GP-3375: 支持微软账户上传皮肤 GP-3032: 检查模组更新界面加入全选/取消全选复选框 GP-3373: 更新模组下载页游戏版本列表至 1.21.3 GP-3232: 支持在模组管理页面通过右键单击模组查看模组详情 GP-3427: 更新 EXE 图标 GP-3435: 在游戏下载列表中添加...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.6/3.6.11.html",
+ "teaser": null
+ },{
+ "title": "3.6.12",
+ "excerpt":"版本介绍:cv41174209 启动器 GP-3457: 实验性支持 WebP 格式的背景图片 GP-3523: 模组列表页中按下 ESC 键时取消选中 GP-3601: 更新模组数据 GP-3603: 支持临时隐藏预览版提示 GP-3610, GP-3613: 统一并优化软件内日期时间格式 GP-3619: 在启动器日志中记录处理器型号(仅 Windows) GP-3620: 修改整合包下载对话框内「安装到当前版本」按钮的文本为「安装整合包」,修正对话框标题 GP-3621: 点击安装整合包时无条件关闭整合包下载对话框 GP-3629: 删除全局游戏设置页面的离线账户更换皮肤提示 GP-3628: 在版本的游戏设置中添加「复制全局游戏设置」选项 GP-3650: 点击账户卡片空白处时切换账户 GP-3653: 优化 NBT 查看器,修复无法打开空 mca/mcr 文件的问题 GP-3663: 启动时尝试从 HMCL_DIRECTORY 中加载字体 GP-3665, GP-3673: 支持双击复制世界信息、安装 Java 页面信息、模组详情对话框信息 GP-3689: 在世界管理界面显示世界图标 GP-3675: 更新 Microsoft...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.6/3.6.12.html",
+ "teaser": null
+ },{
+ "title": "3.6.14",
+ "excerpt":"版本介绍: cv42290390 启动器 GP-3938: 使用 Java 8 打开启动器时弹出弃用警告 (by Glavo) GP-4032: 使用 Java 8 运行时禁止更新 (by Glavo) GP-3854: 右键主页“启动游戏”按钮时展开版本列表菜单 (by Glavo) GP-3875: 使用工作路径下的 .hmcl 文件夹存放所有配置文件 (by Glavo) GP-3914: 启动时在日志中记录用户设备的 CPU 信息 (by Glavo) GP-3893: 启动时在日志中记录用户设备的 GPU 信息 (by Glavo) GP-3974: 更新日志中仅显示本次更新内容 (by Wulian233) GP-4040: 更新模组数据 (by Glavo) 游戏管理 GP-3734: 折叠高级设置中不适用于当前系统的选项...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.6/3.6.14.html",
+ "teaser": null
+ },{
+ "title": "3.6.15",
+ "excerpt":" 下载 GP-4085: 更新模组下载页游戏版本列表至 1.21.8 (by Glavo) 错误修复 GP-4086: 修复安装 Oracle JDK 后可能无法使用启动器的问题 (by Glavo) GP-4096: 修复无法使用部分日志字体的问题 (by Glavo) GP-4097: 修复 InstallersPage 可能意外地显示滚动条的问题 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.6/3.6.15.html",
+ "teaser": null
+ },{
+ "title": "3.6.16",
+ "excerpt":" 启动器 GP-4262: 更新 AMD 显卡信息 (by Glavo) GP-4274: 更新 chunkbase 种子地图链接 (by Wulian233) 错误修复: GP-4174: 修复无法从 BMCLAPI 下载部分 NeoForge 所需文件的问题 (by 辞庐) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.6/3.6.16.html",
+ "teaser": null
+ },{
+ "title": "3.6.17",
+ "excerpt":"版本介绍: cv43005407 启动器 GP-4422: 弃用 Java 11 支持 (by Glavo) GP-4164: 支持通过环境变量强制使用 GPU 渲染和控制动画帧率 (by Glavo) GP-4179: 在 ./.hmcl/java 中搜索 Java (by Glavo) GP-4365: 修复首次打开子页面时切换动画丢失的问题 (by Glavo) GP-4439: 更新模组和整合包数据 (by Glavo) GP-4414: 检测到配置文件由高版本启动器创建时禁止保存配置文件 (by Glavo) 游戏管理 GP-4224: 支持在 Windows 7/8/8.1 上使用软渲染器 (by Glavo) 下载 GP-4170: 模组下载列表翻页后自动回到顶部 (by 辞庐) GP-4171: 支持加载...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.6/3.6.17.html",
+ "teaser": null
+ },{
+ "title": "3.6.18",
+ "excerpt":"版本介绍: cv43162536 游戏管理 GP-4515: 优化 Java 自动选择规则 (by Glavo) 错误修复 GP-4508: 修复使用 JavaFX 25 时游戏下载界面布局错误的问题 (by Glavo) GP-4465: 修复启用代理身份认证且未设置密码时启动器崩溃的问题 (by Glavo) GP-4466: 修复滚动切换游戏实例/账户功能 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.6/3.6.18.html",
+ "teaser": null
+ },{
+ "title": "3.6.20",
+ "excerpt":"版本介绍: cv43348716 启动器 GP-4223: 在“设置 > 通用”添加“提前预览 HMCL 版本”选项 (by Glavo) 详情请见完整更新日志: cv43348716 GP-4088: 当离线账户名称超过 16 字符时弹出警告 (by ShulkerSakura) 下载 GP-4120: 更新 unlisted-versions-of-minecraft 镜像源地址 (by 8Mi_Yile) GP-4626: 更新模组下载页游戏版本列表至 1.21.10 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.6/3.6.20.html",
+ "teaser": null
+ },{
+ "title": "3.7.1",
+ "excerpt":"详细版本介绍: cv43400451 启动器 GP-4452: 将最低 Java 版本提升至 Java 17 (by Glavo) GP-4454: 将默认 JavaFX 版本更新至 21.0.8/25 (by Glavo) GP-4439: 更新模组和整合包数据 (by Glavo) GP-4064: 优化主页公告关闭按钮 (by 辞庐) GP-4145: 在 Windows 平台优先使用注册表探测 GPU (by Glavo) GP-4163: 通过主页右下角弹出菜单切换版本后隐藏菜单 (by Glavo) GP-4142: 忽略 %ProgramFiles%\\Common Files\\Oracle\\Java 中的 Java (by Glavo) GP-4180: 支持搜索不包含 release 文件的 Java...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.7/3.7.1.html",
+ "teaser": null
+ },{
+ "title": "3.7.2",
+ "excerpt":"详细版本介绍: cv43439723 GP-4682: 将陶瓦联机更新至 0.3.10 (by Burning_TNT) GP-4688: 调整陶瓦联机界面左侧按钮 (by Glavo) GP-4686: 优化陶瓦联机用户须知对话框 (by Glavo) GP-4687: 优化陶瓦联机的复制邀请码功能 (by Glavo) GP-4700: 当且仅当用户位于中国大陆地区时尝试从镜像源下载陶瓦联机 (by Burning_TNT) GP-4705: 在陶瓦联机界面的启动游戏按钮中显示当前实例名称 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.7/3.7.2.html",
+ "teaser": null
+ },{
+ "title": "3.7.3",
+ "excerpt":"详细版本介绍: cv43540463 启动器 GP-4727: 将官方群组入口重新移动到主界面 (by Glavo) 联机 GP-4724: 将陶瓦联机更新至 0.3.12 (by Burning_TNT) 错误修复 GP-4721: 修复 JFXListViewSkin 创建大量平台线程的问题 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.7/3.7.3.html",
+ "teaser": null
+ },{
+ "title": "3.7.5",
+ "excerpt":"详细版本介绍: cv43648491 启动器 GP-4742: 更新 Chunkbase 种子地图链接 (by Wulian233) 联机 GP-4723: 将陶瓦联机更新至 0.3.13 (by Burning_TNT) GP-4735: 在不支持的平台上打开陶瓦联机页面时弹出提示 (by Glavo) 错误修复 GP-4736: 修复 FreeBSD x86-64 平台上错误的将所有版本视作未经测试的版本的问题 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.7/3.7.5.html",
+ "teaser": null
+ },{
+ "title": "3.7.6",
+ "excerpt":"详细版本介绍: cv43836292 下载 GP-4767: 添加对 25w45a_unobfuscated 的支持 (by Glavo) GP-4782: 添加对 25w46a_unobfuscated 的支持 (by Glavo) GP-4829: 添加对 1.21.11-pre1/2_unobfuscated 的支持 (by mineDiamond) GP-4841: 更新 HMCL 元数据链接 (by Glavo) 联机 GP-4816: 更新陶瓦联机用户须知 (by Glavo) GP-4838: 将陶瓦联机更新至 0.3.14 (by Burning_TNT) 错误修复 GP-4795: 修复初次打开部分页面时页面闪烁的问题 (by Glavo) GP-4808: 修复 Windows 下全局设置中本地库路径路径分隔符显示错误的问题 (by 辞庐) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.7/3.7.6.html",
+ "teaser": null
+ },{
+ "title": "3.8.1",
+ "excerpt":"详细版本介绍: cv43836921 启动器 GP-4703, GP-4743: 优化更新日志展示功能 (by Glavo) GP-4696: 在外链按钮上添加 tooltip (by neveler) GP-4749: 恢复对 JavaFX 14 的兼容性 (by Glavo) GP-4760: 从注册表中读取 Windows 版本信息 (by Glavo) GP-4540: 删除实例失败时弹出对话框 (by Glavo) GP-4770: 更新模组数据 (by Glavo) GP-4776: 优化游戏实例默认图标 (by Glavo) GP-4672: 优化数据包管理功能 (by mineDiamond) GP-4612: 增强解析数据包/资源包元数据的能力 (by mineDiamond) GP-4826: 从首页打开子页面时打开默认标签页 (by Glavo)...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.8/3.8.1.html",
+ "teaser": null
+ },{
+ "title": "3.8.2",
+ "excerpt":"详细版本介绍 (Bilibili) 启动器 GP-4886: 优化对 Linux MIPS64el 平台的支持 (by Glavo) GP-4917: 支持 Minecraft 新版本号规则 (by Glavo) 错误修复 GP-4850: 修复 FetchTask 未设置 User-Agent 的问题 (by Glavo) GP-4913: 修复游戏进程结束时点击日志窗口的“结束游戏进程”按钮会导致启动器无响应的问题 (by Glavo) GP-4981: 修复从 BMCLAPI 下载部分旧文件时校验失败的问题 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.8/3.8.2.html",
+ "teaser": null
+ },{
+ "title": "3.9.1",
+ "excerpt":"详细版本介绍 (Bilibili) 启动器 GP-4837: 实验性支持阿拉伯语 (by Hommam-Prom) GP-4911, GP-4963: 添加对 1.21.11_unobfuscated 及其预发布版的支持 (by mineDiamond) GP-4927: 在 macOS 平台上导出启动脚本时支持导出 .command 文件 (by WhatDamon) GP-5019: 使用子标题注解“提前预览 HMCL 版本”选项 (by neveler) GP-5008: 优化反馈页面 (by Glavo) 游戏设置 GP-4144: 添加输出游戏调试日志选项 (by 辞庐) 实例管理 GP-4475: 添加资源包管理功能 (by 辞庐) GP-4872: 添加快速进入世界功能 (by mineDiamond) 账户管理 GP-4932: 在主页右键点击账户按钮时弹出快速切换账户菜单 (by...","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.9/3.9.1.html",
+ "teaser": null
+ },{
+ "title": "3.9.2",
+ "excerpt":"详细版本介绍 (Bilibili) 启动器 GP-5046: 禁用日志窗口的平滑滚动效果 (by Glavo) GP-5052: 优化列表的平滑滚动效果 (by Glavo) GP-5110: 更新 NeoForge 版本号规则 (by 辞庐) 错误修复 GP-5128: 修复使用 BMCLAPI 下载源时选择 Liteloader 版本时可能报错的问题 (by Wulian233) GP-5125: 修复未正确归类 NeoForge alpha 版本的问题 (by 辞庐) GP-5220: 修复 CurseForge 源无法搜索到内容的问题 (by Glavo) ","categories": [],
+ "tags": [],
+ "url": "/changelogs/stable/3.9/3.9.2.html",
+ "teaser": null
+ },{
+ "title": "贡献指南",
+ "excerpt":"如果你认为你有能力为 HMCL 添加高质量的帮助文档,或希望修改错误,你可以到 https://github.com/HMCL-dev/HMCL-docs 仓库中发 Pull Request,或者提 Issue。 或者你可以进入我们的 Discord 或 HMCL 用户群 群以向 HMCL 反馈。 ","categories": [],
+ "tags": [],
+ "url": "/contribution.html",
+ "teaser": null
+ },{
+ "title": "寻求帮助",
+ "excerpt":"QQ 群聊 Hello Minecraft! Launcher 的官方 QQ 群聊。 点击前往 Discord 频道 Hello Minecraft! Launcher 的官方 Discord 频道。 点击前往 ","categories": [],
+ "tags": [],
+ "url": "/help.html",
+ "teaser": null
+ },{
+ "title": "加入 HMCL 报错崩溃交流群",
+ "excerpt":" 加入群聊前请注意 游戏非正常退出时,请点击左下角 按钮(不是 按钮),并完整发送生成的报错压缩包 遇到其他问题时,请详细说明情况并提供相关截图,以便我们提供帮助 使用整合包时,请说明具体的整合包名称与版本 请保持耐心,群管理和群友会协助解决问题。严禁辱骂、催促他人 禁止讨论政治、色情、违法、金钱交易等敏感内容,禁止人身攻击、造谣诽谤等行为 禁止刷屏、灌水、挑起争端、发泄情绪等影响群聊秩序的行为 禁止使用第三方插件发送特殊消息;禁止讨论多人游戏作弊工具 本群仅支持 HMCL 启动器相关问题。PCL 启动器用户请加入 978054335 群 请勿重复发送文件,如需重新获取关注,请引用之前发送的消息 因人数限制,已解决问题的用户会被移出群聊。如遇新问题可再次加入 本群仅处理游戏崩溃相关问题,其他话题请到其他群讨论 请等待 5 秒,请认真阅读注意事项 我已了解 如果你遇到了游戏非正常退出问题,欢迎加入报错崩溃交流群咨询解决方案:Minecraft 报错崩溃交流群 (666546887) 本群仅处理游戏报错崩溃问题,无关话题请前往其他群聊讨论。 由于加群人数过多,我们会移出问题已解决的用户。如果你在被移出后遇到了新的问题需要求助,你可以再次加群。 ","categories": [],
+ "tags": [],
+ "url": "/crash-support-group.html",
+ "teaser": null
+ },{
+ "title": "加入 HMCL 用户群",
+ "excerpt":"欢迎所有 Minecraft 玩家加入 HMCL 用户群,入群请遵守以下群规: 禁止谈论政治相关、色情、违法犯罪、金钱往来等敏感内容,禁止辱骂、造谣诽谤、恶俗等行为,禁止讨论精神疾病、LGBT 等话题,请尊重每一个人; 禁止刷屏、倒垃圾、引战、宣泄个人情绪、刻意误导等破坏讨论环境的行为; 禁止上传 EXE 和 APK 文件; 禁止使用第三方模块/插件在群聊中发送特殊消息; 禁止讨论多人游戏中的作弊工具; 禁止发布与 Minecraft 无关的广告,可以适当宣传服务器、整合包等相关内容,同一内容每人每周最多宣传一次; 用户群交流主题为 Minecraft,请不要过多讨论其他游戏内容。 用户群 以下为闲聊群,欢迎所有用户加入(同时加入多个群聊会被踢出): HMCL 用户群 ① (633640264)(已满) HMCL 用户群 ② (203232161) HMCL 用户群 ③ (201034984)(已满) HMCL 用户群 ④ (533529045)(已满) HMCL 用户群 ⑤ (744304553) HMCL 用户群 ⑥ (282845310)(已满) HMCL 用户群 ⑦ (482624681)...","categories": [],
+ "tags": [],
+ "url": "/groups.html",
+ "teaser": null
+ },{
+ "title": "各大问题集合",
+ "excerpt":"这是一个提供给新手或小白的阅读文档,旨在用最简单的方式帮你快速上手 HMCL 启动器和 Minecraft 游戏。如需深入了解某个主题,可点击文中提供的链接查看详细文档。 如何登录账户 你需要使用微软账户购买游戏才能游玩 Minecraft,或者使用离线账户/外置账户。 你可以在 Minecraft 官网 或 Xbox 商店 购买游戏。 完成购买后,在 HMCL 主界面左上角,点击「账户」,然后点击左侧的「微软账户」登录你的账户,或者点击「离线登录」创建一个离线账户。 如何下载游戏 使用 HMCL 下载 Minecraft 非常简单,只需几步即可完成。 如果你尚未安装任何实例(即未安装过任何游戏版本),可以直接点击 「开始游戏」。HMCL 会自动安装最新正式版 Minecraft 并启动游戏。 若想下载更多实例(首次下载也可以按此方式操作),请按以下步骤进行: 在主界面找到并点击左侧的「下载」按钮。 在下载页面,点击左侧顶部的「游戏」选项卡。这里会列出所有可用的游戏版本(版本号从上到下/由新到旧排序),选择一个你喜欢的版本。我们通常推荐最新的正式版。 点击右下角的「安装」按钮,HMCL 就会自动为你完成下载和安装。 现在回到主界面,点击右下角的 「启动游戏」 按钮,开始你的创造吧! 游戏玩法是什么 在等待游戏下载时,不妨先了解一下它的核心玩法。 作为一款沙盒游戏,简单的说,核心玩法就是 「破坏」 和 「创造」 。你可以自由地探索世界、收集资源、建造家园、挑战怪物…… 对于新手而言,下面这些官方中文 Wiki 链接是你的最佳起点: 新手入门必读:Minecraft Wiki 新手手册...","categories": [],
+ "tags": [],
+ "url": "/faq.html",
+ "teaser": null
+ },{
+ "title": "下载 HMCL 和 Minecraft 依赖的 Java",
+ "excerpt":"正在前往 Java 下载页面,请点击下载,然后等待 Java 安装程序下载完成,最后启动安装程序,依照提示安装 Java。 没有前往?点击此处 You are going to the Java download page. Please click download after redirecting, then wait for the Java installer to finish downloading, finally open the installer and follow the prompts to install Java. No redirect? Click here ","categories": [],
+ "tags": [],
+ "url": "/downloads/java.html",
+ "teaser": null
+ },{
+ "title": "下载适用于 Linux ARM32 的 HMCL 和 Minecraft 依赖的 Java",
+ "excerpt":"点下面的链接以下载 Java ,然后使用软件包管理器或者手动解压安装。 链接 或者你也可以根据教程来添加仓库到你的软件包管理器。 Click one of the following links to download Java, and then use the package or extract it manually to install Java. Link Or you can add the repository to the package manager according to the instruction. ","categories": [],
+ "tags": [],
+ "url": "/downloads/linux/arm32.html",
+ "teaser": null
+ },{
+ "title": "下载适用于 Linux ARM64 的 HMCL 和 Minecraft 依赖的 Java",
+ "excerpt":"点下面的链接以下载 Java ,然后使用软件包管理器或者手动解压安装。 链接 或者你也可以根据教程来添加仓库到你的软件包管理器。 Click one of the following links to download Java, and then use the package or extract it manually to install Java. Link Or you can add the repository to the package manager according to the instruction. ","categories": [],
+ "tags": [],
+ "url": "/downloads/linux/arm64.html",
+ "teaser": null
+ },{
+ "title": "下载适用于 Linux x86 的 HMCL 和 Minecraft 依赖的 Java",
+ "excerpt":"点下面的链接以下载 Java ,然后使用软件包管理器或者手动解压安装。 链接 或者你也可以根据教程来添加仓库到你的软件包管理器。 Click one of the following links to download Java, and then use the package or extract it manually to install Java. Link Or you can add the repository to the package manager according to the instruction. ","categories": [],
+ "tags": [],
+ "url": "/downloads/linux/x86.html",
+ "teaser": null
+ },{
+ "title": "下载适用于 Linux x86_64 的 HMCL 和 Minecraft 依赖的 Java",
+ "excerpt":"点下面的链接以下载 Java ,然后使用软件包管理器或者手动解压安装。 链接 或者你也可以根据教程来添加仓库到你的软件包管理器。 Click one of the following links to download Java, and then use the package or extract it manually to install Java. Link Or you can add the repository to the package manager according to the instruction. ","categories": [],
+ "tags": [],
+ "url": "/downloads/linux/x86_64.html",
+ "teaser": null
+ },{
+ "title": "下载适用于 macOS ARM64 的 HMCL 和 Minecraft 依赖的 Java",
+ "excerpt":"正在前往 Java 下载页面,请向下滚动点击 DMG 安装包下载按钮,然后等待 Java 安装程序下载完成,最后启动安装程序,依照提示安装 Java。 没有下载?点击此处开始下载 You are going to the Java download page. Please scroll down and click DMG download button, then wait for the Java installer to finish downloading, and finally open the installer and follow the prompts to install Java. No redirect? Click here...","categories": [],
+ "tags": [],
+ "url": "/downloads/macos/arm64.html",
+ "teaser": null
+ },{
+ "title": "下载适用于 macOS x86_64 的 HMCL 和 Minecraft 依赖的 Java",
+ "excerpt":"正在前往 Java 下载页面,请向下滚动点击 DMG 安装包下载按钮,然后等待 Java 安装程序下载完成,最后启动安装程序,依照提示安装 Java。 没有下载?点击此处开始下载 You are going to the Java download page. Please scroll down and click DMG download button, then wait for the Java installer to finish downloading, and finally open the installer and follow the prompts to install Java. No redirect? Click here...","categories": [],
+ "tags": [],
+ "url": "/downloads/macos/x86_64.html",
+ "teaser": null
+ },{
+ "title": "下载适用于 Windows on Arm 的 HMCL 和 Minecraft 依赖的 Java",
+ "excerpt":"Java 安装包已开始下载,请等待 Java 安装程序下载完成,最后启动安装程序,依照提示安装 Java。 没有下载?点击此处开始下载 无法下载?点击此处开始下载(备用) The Java installation package has started to download. Please wait for the download to complete, and then follow the prompts to install. No redirect? Click here to start downloading Can’t download? Click here to download (alternative) ","categories": [],
+ "tags": [],
+ "url": "/downloads/windows/arm64.html",
+ "teaser": null
+ },{
+ "title": "下载适用于 Windows x86 的 HMCL 和 Minecraft 依赖的 Java",
+ "excerpt":"正在前往 Java 下载页面,请向下滚动点击 MSI 安装包下载按钮,然后等待 Java 安装程序下载完成,最后启动安装程序,依照提示安装 Java。 没有下载?点击此处开始下载 You are going to the Java download page. Please scroll down and click MSI download button, then wait for the Java installer to finish downloading, and finally open the installer and follow the prompts to install Java. No redirect? Click here...","categories": [],
+ "tags": [],
+ "url": "/downloads/windows/x86.html",
+ "teaser": null
+ },{
+ "title": "下载适用于 Windows x86_64 的 HMCL 和 Minecraft 依赖的 Java",
+ "excerpt":"Java 安装包已开始下载,请等待 Java 安装程序下载完成,最后启动安装程序,依照提示安装 Java。 没有下载?点击此处开始下载 无法下载?点击此处开始下载(备用) The Java installation package has started to download. Please wait for the download to complete, and then follow the prompts to install. No redirect? Click here to start downloading Can’t download? Click here to download (alternative) ","categories": [],
+ "tags": [],
+ "url": "/downloads/windows/x86_64.html",
+ "teaser": null
+ },{
+ "title": "下载 HMCL 和 Minecraft 依赖的 Java",
+ "excerpt":"龙芯平台存在 “新世界” 和 “旧世界” 两个 ABI,不同 ABI 的 Java 暂时互不兼容。 请在终端中输入 uname -r 命令查看 Linux 内核版本: 如果你的内核版本为 5.10 或更高版本,请下载新世界 Java; 如果你的内核版本为 4.19,请下载旧世界 Java。 新世界 如果你正在使用新世界龙芯系统,请下载新世界 Java。 直接下载 (需自行安装):loongson25.1.5-fx-jdk25_36-linux-loongarch64-glibc2.34.tar.gz 通过包管理器安装: AOSC OS/Debian/Ubuntu: sudo apt install default-jre 注意:Deepin 软件源中的 Java 不包含 JIT 编译器,使用它启动游戏性能将极其糟糕。我们推荐 Deepin 用户直接下载 Java,而不是使用 APT 安装。 ArchLinux: sudo pacman -S...","categories": [],
+ "tags": [],
+ "url": "/downloads/linux/loongarch64.html",
+ "teaser": null
+ },{
+ "title": "下载适用于 Linux RISC-V 64 的 HMCL 和 Minecraft 依赖的 Java",
+ "excerpt":"点下面的链接以下载 Java ,然后使用软件包管理器或者手动解压安装。 链接 或者你也可以根据教程来添加仓库到你的软件包管理器。 Click one of the following links to download Java, and then use the package or extract it manually to install Java. Link Or you can add the repository to the package manager according to the instruction. ","categories": [],
+ "tags": [],
+ "url": "/downloads/linux/riscv64.html",
+ "teaser": null
+ },{
+ "title": "Hello Minecraft! Launcher 用户协议",
+ "excerpt":"欢迎使用黄鱼(以下简称“开发者”)提供的 Hello Minecraft! Launcher(以下简称“本软件”)软件与服务。 为了保障用户(或称“您”)的权益,特制定本用户协议书(以下简称本协议)。 请您在使用本软件前,详细阅读本协议的所有内容。开发者可能随时更新本协议,本协议一旦发生变动,开发者将会在相关页面上通告修改内容。 修改后的本协议一旦在页面上公布即有效代替原用户协议书。 请用户仔细阅读以下全部内容,当用户开始使用本软件时,则应视为用户已经详细阅读并同意本协议的全部内容,且同意遵守本协议的规定。 第一条 用户的义务 1.用户应自行配备上网的所需设备。 2.用户应自行负担上网所需支付的与此服务相关的电话、网络使用等费用。 3.用户应为其使用本软件产生的行为、事件、结果承担法律责任。 4.用户在本软件内所设置的用户名、头像等可以由用户自行设置,但是为了维护网络和谐,本软件内不允许出现包括但不限于涉及 种族/宗教、国家政治、国家领导人、淫秽/粗俗内容、诽谤/恐吓、宗教或宗教人物、工作人员、攻击性的、侮辱性的、可能引起误会地、违禁药品等内容的名称。 5.用户应遵守中华人民共和国相关法律法规(如果用户是中华人民共和国境外的使用者,还应遵守所属国家或地区的法律法规)。 用户应当自行承担其所发布的信息内容所涉及的法律责任。此外,用户不得发布下列任何内容: 1) 反对中华人民共和国宪法所确定的基本原则的; 2) 危害国家安全,泄露国家机密,颠覆国家政权,破坏国家统一的; 3) 损害国家荣誉和利益的; 4) 煽动民族仇恨、民族歧视,破坏民族团结的; 5) 破坏国家宗教政策,宣扬邪教和封建迷信的; 6) 散布谣言,扰乱社会秩序,破坏社会稳定的; 7) 散布淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪的; 8) 侮辱或者诽谤他人,侵害他人合法权益的; 9) 含有中华人民共和国法律、行政法规禁止的其他内容的。 如您发布上述任何内容,则开发者有权视情节严重程度,依据本协议及法律法规,对您做出包括但不限于终止服务等处理措施;情节严重的开发者将移交有关行政管理机关给予行政处罚,或者追究您的刑事责任。 除非法律允许或开发者书面许可,用户不得从事下列任何行为: 1) 不合法、不恰当地使用本软件及服务; 2) 采取任何可能影响本软件网络服务的非正常使用行为(包括但不限于损害、攻击服务器或使服务器过度负荷等); 3) 使用本软件的名称、商标或其他知识产权; 4) 删除本软件及其副本上关于著作权的信息。 第二条 服务的中断、中止、终止 对用户服务的中止与终止 1) 用户有发布违法信息、严重违背社会公德、以及其他违反法律禁止性规定的行为,开发者应终止对用户提供服务。...","categories": [],
+ "tags": [],
+ "url": "/eula/hmcl.html",
+ "teaser": null
+ },{
+ "title": "Authlib-Injector 服务器设置指南",
+ "excerpt":"背景 使用 authlib-injector 认证的服主可以通过本教程提供的方法使 HMCL 默认在打开时弹窗要求创建对应认证服务器的账户。 方法 在 HMCL 启动器同级目录下创建 authlib-injectors.json 文件,此时文件夹目录结构如下图所示: (注意,请确保打包后的整合包不包含 hmcl.json 文件,否则无法生效。该文件默认为隐藏状态,需开启隐藏文件显示) authlib-injectors.json 文件的示例如下 { \"urls\": [ \"https://example.yggdrasil.yushi.moe/\" ] } ","categories": [],
+ "tags": [],
+ "url": "/launcher/authlib-injector.html",
+ "teaser": null
+ },{
+ "title": "数据包制作指南",
+ "excerpt":"本指南只介绍如何制作一个 HMCL 可导入的数据包压缩包。 建议 始终建议你使用多数据包格式制作数据包压缩包,因为 HMCL 会删除重名的数据包,因此可以借此完成更新功能,只要直接导入新的多数据包格式的压缩包就可以完成更新你制作的数据包。 多数据包 如果你的数据包被分离成多个部分供玩家选择是否启用,或者需要自带资源包,那么你需要制作多数据包格式的压缩包。 多数据包文件(只能是一个 .zip 文件)格式例子如下: crafting++.zip \\ * datapacks |\\ | * block_sky_domain (一个合法的数据包) | * crafting_machine | * craftingpp | * tradepp | * utilitypp | * resources.zip (如果你的数据包需要附带材质) \\ * assets \\ * ... 其中,datapacks 下的文件格式和 .minecraft/saves/New World/datapacks 的一样,因此可直接手动打包你本地的 datapacks 文件夹,...","categories": [],
+ "tags": [],
+ "url": "/launcher/datapack.html",
+ "teaser": null
+ },{
+ "title": "全局版本隔离",
+ "excerpt":"请注意该方法会改变默认的游戏文件结构。 使用方式 进入 hmcl 的 设置 在全局游戏设置中找到 版本隔离 并设置为 各实例独立 这时候 minecraft 的文件结构就会有所改变,如下方 .minecraft ├── asstes ├── libraries └── versions └── 1.16.5-optifine ├── 1.16.5-optifine.jar ├── saves ├── resourcepacks ├── logs ├── mods └── ... 并非在 .minecraft 文件夹中存储一切的 mod 和 资源包而是各版本的资源互相独立 这样你就可以在一个目录下,安装多个客户端 往后的使用 在做完版本隔离的设置后,hmcl 的快速打开各个游戏文件夹的功能就会显得十分好用。 善用该功能也可为你的磁盘剩下不少的空间,现在反思过来其实都差不多 ","categories": [],
+ "tags": [],
+ "url": "/launcher/isolation.html",
+ "teaser": null
+ },{
+ "title": "光影",
+ "excerpt":"安装 OptiFine 方式一: 全新安装 当你在安装新的游戏客户端时候,会看到有个 OptiFine 的选项。 点开之后会看到有 3 个复选框,一般而言,正式版 会比 测试版 更加稳定。选择安装 正式版 ,如果没有 正式版 那么再考虑 测试版 。 选择完合适的版本之后就可以点击右下角的安装继续进行安装。 方式二: 修改/升级已安装版本 在对应的游戏版本管理页面,点击 自动安装 ,你会看到有个 OptiFine 的选项。 点开之后选择合适的版本然后等待安装完成即可。 目前,如果要在 Fabric 使用 OptiFine ,需要通过 方式四 安装。 方式三:官网安装 在 OptiFine 官网上下载合适版本的 OptiFine (下载完应为 OptiFine_<游戏版本>_<OptiFine版本>.jar ) 。 双击打开或者使用 java -jar 文件名 的方式打开,然后你就会看到这个界面。 选择自己游戏的...","categories": [],
+ "tags": [],
+ "url": "/launcher/shader.html",
+ "teaser": null
+ },{
+ "title": "同时安装 Fabric & OptiFine",
+ "excerpt":"在 HMCL 的自动安装中,如果先选择了 Fabric 或 OptiFine ,HMCL 就会提示他们互不兼容。 但在本文档中,通过一些简单的操作就可以同时安装 Fabric & OptiFine 的客户端。 原理是安装 OptiFabric 这个 Fabric 模组,该模组的作用是采用官方的 OptiFine 并在运行时与 Fabric 兼容来实现这一点。 如果你使用 OptiFine 纯粹是为了提高性能、使用缩放按钮或动态照明,那么还有其他模组可以单独实现这些功能,具有更可靠的兼容性。 操作方法 1.先选择一个版本,并选择 Fabric ,并安装。 注:如果你想放置其他的 Fabric 模组,建议一并安装 Fabric API ,有些 Fabric 模组会依赖他。 2.获取并安装 OptiFabric 模组 & OptiFine 获取 1)获取 OptiFabric ,可以在他的 MC百科下载页面(推荐) CurseForge 页面 或在...","categories": [],
+ "tags": [],
+ "url": "/launcher/fabric_and_optifine_install.html",
+ "teaser": null
+ },{
+ "title": "设置项详解",
+ "excerpt":"引言 本篇文章将从”全局游戏设置”, “通用”, “外观”与”下载”这几个维度, 详细的为您介绍HMCL设置中各个选项的作用, 对于一些能够”见名知意”的条目, 在本篇文章中不过多讨论. 约束与注意 本篇文章是在 HMCL-3.5.3.230 版本中编写的, 如果您使用的是旧版本, 请注意有些选项可能不存在. 全局游戏设置 这是 HMCL 中的第一个设置项, 也是最重要的设置项之一, 它决定了 HMCL 在启动游戏时的行为. Java路径 众所周知, Minecraft 是由 Java 编写的, 因此在启动游戏时 HMCL 需要知道 Java(JRE1) 的安装路径才能启动游戏. 由于 HMCL 本身就是一个 Java 程序, 一般能正常启动 HMCL 就能至少在计算机上找到一个 JRE. 但也会由于一些未知因素导致无法找到 JRE, 这时, 就需要手动指定 JRE 的安装路径. 我们先来讨论能够自动识别的情况: 在 HMCL...","categories": [],
+ "tags": [],
+ "url": "/launcher/set-item-details.html",
+ "teaser": null
+ },{
+ "title": "使用密码登录微软账户",
+ "excerpt":"为什么使用密码登录 我们发现,某些账户在尝试通过非密码方式登录时,可能会遇到设备代码流授权问题,从而无法成功登录。而建议这些用户改用密码登录后,他们的登录成功率显著提高。 如何使用密码登录微软账户 在执行登录操作时,注意检查登录页面是否有“其他登录方式”的选项。一旦看到此选项,立即点击进行选择。 在登录页面,系统会询问您希望采用哪种登录方式。此时,需要选择“使用我的密码”,然后输入密码完成登录。 如果没有“使用我的密码”选项,或者忘记了密码,请看 下方教程 添加/更改密码 部分账户可能并未设置密码登录,或者忘记了密码,请按照以下步骤进行操作: 前往 添加/更改密码 页面; 在该页面按照指示添加密码即可。若忘记密码,可选择该页面“忘记密码了?”选项进行找回密码操作。 完成上述操作后再按照 上方教程 操作即可使用密码登录微软账户。 ","categories": [],
+ "tags": [],
+ "url": "/launcher/use-password-login-microsoft-account.html",
+ "teaser": null
+ },{
+ "title": "JVM 选项与环境变量",
+ "excerpt":"JVM 选项 HMCL 提供了一些 JVM 选项用于调试目的。你可以通过在启动 HMCL 时添加这些参数来使用这些功能。 参数 描述 -Dhmcl.home=<path> 覆盖 HMCL 全局数据文件夹路径 -Dhmcl.dir=<path> 覆盖 HMCL 工作路径下的 .hmcl 文件夹路径 -Dhmcl.self_integrity_check.disable=true 禁用启动器更新时的本体完整性检查 -Dhmcl.bmclapi.override=<url> 自定义 BMCLAPI 的 API Root 地址(默认为 https://bmclapi2.bangbang93.com) -Dhmcl.font.override=<font family> 指定启动器使用的字族 -Dhmcl.version.override=<version> 手动指定启动器版本号 -Dhmcl.update_source.override=<url> 自定义 HMCL 更新源地址 -Dhmcl.authlibinjector.location=<path> 指定本地 authlib-injector 路径,不从网络下载 -Dhmcl.openjfx.repo=<maven repository url> 添加用于下载 OpenJFX 的自定义 Maven...","categories": [],
+ "tags": [],
+ "url": "/launcher/jvm-options-and-env.html",
+ "teaser": null
+ },{
+ "title": "自动安装与模组下载简介",
+ "excerpt":"要为 Minecraft 安装模组,你首先需要安装一个“模组加载器”(例如 NeoForge 或 Fabric),然后再安装你想要的模组。HMCL 为这两个步骤都提供了强大的支持。 在安装前,最关键的一点是兼容性。请记住以下核心原则: 通常,你只能为单个游戏实例安装一种模组加载器。 你下载的模组,必须同时兼容你的游戏版本(如 1.20.4)和模组加载器(如 Fabric)。 简单来说,为游戏安装模组总共分三步,本指南将带你逐一完成: 开启版本隔离,为模组创建一个独立干净的环境。 安装模组加载器(如 Forge, Fabric)。 安装你喜欢的模组。 启用版本隔离 在安装模组之前,必须开启版本隔离以隔离为不同实例安装的模组: 在 HMCL 主界面,点击「设置」,在「全局游戏设置」选项卡中,找到「版本隔离」,点击「版本隔离」,选择「各实例独立」即可 更详细的介绍见 全局版本隔离 安装模组加载器 模组加载器简介 常见的模组加载器有以下几个: Forge,NeoForge,Fabric,Quilt,Cleanroom,LiteLoader 是 6 个常见的 Mod 加载器。 Fabric API,QSL/QFAPI 是两个随 Fabric 与 Quilt 的官方 API(实际是模组)。 兼容性: LiteLoader 和 Forge 是兼容的 (Forge 较新版本和 LiteLoader...","categories": [],
+ "tags": [],
+ "url": "/launcher/auto-installing.html",
+ "teaser": null
+ },{
+ "title": "离线模式下更换皮肤",
+ "excerpt":"离线模式下更换皮肤 注意: 使用 Steve、Alex、本地皮肤图片文件: 可能无法加入多人联机,其他玩家可能看不到您的皮肤 使用 LittleSkin、Blessing Skin 服务器: 多人联机下和您使用 相同方式 的玩家可以看到您的皮肤, 其他玩家不可以 打开HMCL, 进入 账号列表 , 点击下图离线账号的【上传皮肤】红框处: 默认: 使用默认随机的皮肤显示 Steve: 使用Steve (史蒂夫) 皮肤显示 Alex: 使用Alex (艾利克斯) 皮肤显示 本地皮肤图片文件、LittleSkin、Blessing Skin 服务器: 请见下文↓ 本地皮肤图片文件 点击 本地皮肤图片文件 , 设置 皮肤/披风皮肤图片 路径, 点击 确认, 即可 LittleSkin 首先您需要一个LittleSkin的账号, 注册并登录 然后前往 角色管理, 查看您的角色名, 如果没有, 请点击...","categories": [],
+ "tags": [],
+ "url": "/launcher/offline-skin.html",
+ "teaser": null
+ },{
+ "title": "界面功能介绍",
+ "excerpt":" 启动器界面整体由顶部工具栏和页面容器构成。 顶部工具栏 提示 用户可以通过双击工具栏在最大化与普通窗口状态之间切换。 此区域为全局显示,共分为左右两部分。其中左侧由返回按钮(仅在二级或多级页面显示)和标题构成,右侧由帮助按钮、最小化按钮和关闭按钮构成。 返回按钮:点击后返回上一页,仅在二级或多级页面上显示,首页不显示。 标题:通常用于显示页面名称,首页显示为启动器版本信息。 帮助按钮:点击后跳转至文档帮助页面。 最小化按钮:点击后最小化启动器。 关闭按钮:点击后关闭启动器。 首页 首页是启动器的起始页面,该页面由侧边导航栏、提示面板(仅限开发版和预览版)、更新面板(仅在存在可用更新时显示)和启动游戏面板构成。 侧边导航栏(首页) 此区域共分为三部分:账户分组、游戏分组及通用分组。 账户分组:该分组中包含一个列表项,该项会显示当前选定的账户头像、名称及账户类型,用户点击该项可进入账户列表页面;右键点击该项可呼出账户切换的快捷菜单。 提示 用户在该项上滚动鼠标滚轮可在不同账户之间进行快捷切换。 游戏分组:该分组中包含三个列表项,分别是:实例管理、实例列表及下载。 实例管理:该项会显示当前选定的游戏实例图标及名称。用户点击该项后进入实例管理页面;在该项上滚动鼠标滚轮可在不同游戏实例之间进行快捷切换。 实例列表:用户点击该项后进入实例列表页面,用于查看和管理游戏实例。 下载:用户点击该项后进入下载页面,用于下载游戏、整合包或者安装模组、资源包、光影或者世界。 通用分组:该分组中包含三个列表项,分别是:设置、多人联机及官方群组。 设置:用户点击该项后进入设置页面。 多人联机:用户点击该项后进入多人联机页面。 官方群组:用户点击该项后跳转至设置·反馈页。 提示面板 提示 用户可通过点击右上角关闭按钮隐藏该提示。 仅在开发版或预览版中显示,用于提示用户当前启动器不是稳定版本。 更新面板 仅在存在可用更新时显示,此区域用于启动器更新提示。 启动游戏面板 此区域共分为两部分:启动(开始)游戏按钮、切换实例菜单。 启动(开始)游戏按钮:若用户当前存在实例,点击后则会启动当前应用的游戏实例;若当前不存在游戏实例,点击后会自动下载最新正式版然后启动游戏。 切换实例菜单:点击显示快捷切换游戏实例列表菜单。 设置 该页面由侧边导航栏和页面容器构成。 侧边导航栏(设置) 此区域共分为四部分:全局游戏设置、Java 管理、启动器分组及帮助分组。 全局游戏设置:用户点击该项后进入全局游戏设置页面。 Java 管理:用户点击该项后进入 Java 管理页面。 启动器分组:该分组中包含三个列表项,分别是:通用、外观及下载。 帮助分组:该分组中包含三个列表项,分别是:帮助、反馈及关于。 设置-全局游戏设置 ","categories": [],
+ "tags": [],
+ "url": "/launcher/gui-features.html",
+ "teaser": null
+ },{
+ "title": "服务端自动更新整合包制作教程",
+ "excerpt":"HMCL 允许服务器管理员借助服务端自动更新整合包来实现自动分发整合包更新,这将大大方便有需要频繁更新游戏客户端 Mod、配置等信息的服务器管理员。 HMCL 需要服务器管理员额外提供一个 HTTP 服务器(只需要能提供静态文件服务,比如 Apache 和 Nginx 皆可)来提供检查整合包更新并允许 HMCL 下载更新文件。 第一步:导出整合包 在 HMCL 中右键做好的客户端版本,选择导出整合包: 选择导出为服务器自动更新整合包: 填写整合包信息,整合包下载链接前缀如何填写请看下文 选择需要包含在整合包内的文件后将产生整合包压缩文件 第二步:导入整合包 接着创建一个全新的空文件夹,将启动器复制进去 运行启动器,并导入刚才导出的整合包,导入完成后,这个文件夹(这里叫“新整合包”)可以打包发给玩家。 第三步:部署整合包更新服务器 你可以借助 Apache、Nginx 等支持静态文件的 HTTP 服务器软件提供文件。首先,决定好整合包下载链接前缀,比如我希望 HMCL 从远程服务器的 http://www.site.com/modpack 目录下存放整合包的更新信息,则在之前导出整合包的整合包下载前缀中填写 http://www.site.com/modpack。 上图为导出的服务器自动更新整合包压缩文件的内容,你需要将这个整合包解压到 http://www.site.com/modpack 下。也就是说,从 http://www.site.com/modpack/server-manifest.json 这个链接下载下来的文件必须和上图中整合包压缩文件中的 server-manifest.json 文件一致,并且,http://www.site.com/modpack/overrides 是一个文件夹,里面存放了整合包文件,比如: 整合包压缩文件 test.zip/overrides/mods/Advancement_Book-1.12-1.0.3.jar 文件必须可以从 http://www.site.com/modpack/overrides/mods/Advancement_Book-1.12-1.0.3.jar 该目录下载下来,且文件内容一致。那么至此更新服务器就部署完成了。 第四步:更新整合包 如果你需要更新整合包,那么将新的整合包经过第一步导出新的整合包压缩文件,并解压到类似 http://www.site.com/modpack...","categories": [],
+ "tags": [],
+ "url": "/modpack/serverpack.html",
+ "teaser": null
+ },{
+ "title": "配置客户端自动更新(宝塔面板)",
+ "excerpt":"备注 文章原作者:hy黑影 转载:Zkitfly 部分内容进行了稍作打磨 本教程转载自 https://www.mcbbs.net/thread-1103864-1-1.html 前言 我自己开设的服务器有很多不同的子服,每个子服的客户端版本呢都不相同,我又希望能整合到一个客户端里面;找了一圈发现那些辅助更新程序只能更新单个客户端版本,而且界面不太美观;甚至一度想自己开发启动器……… 这篇帖子的灵感来自于 HMCL 启动器的一个功能 导出服务器自动更新整合包,我觉得可以利用这个功能来代替一些自动更新的辅助程序。 整个功能的实现需要:一台有公网IP的服务器、一个客户端整合包、HMCL启动器;如果你都没有,那就换成RMB10元 本篇教程默认读者为 萌新,即没有接触过HTTP服务器,网络应用开发,不懂linux系统,惧怕控制台程序 教程 第一步-租服务器(▲如果你有公网IP的服务器,请跳过这一步) 百度搜索 腾讯云学生机 或 阿里云学生机 可以看到有10元/月 的套餐,如果是阿里云的话选轻量型应用服务器,腾讯云就只有一个套餐 系统请选择CentOS 8.0 64位,其他保持默认即可 再次确认是否是十元,是的话直接购买;不是的话可能是你已经买过学生套餐 第一次购买可能需要实名认证,按照提示操作即可,不需要担心安全问题,都是可靠的大公司 第二步-安装宝塔面板——CentOS 8.0系统 以腾讯云举例,阿里云同理 打开控制台面板,找到刚才租的学生机 选择重置密码 点击右侧登入按钮,按照说明填写你刚刚重置的密码;之后应该会看到类似这样的提示 不要慌,冷静。如果下面的部分教程失效请去宝塔面板官网,点击Linux->立即安装 回到控制台面板,我们需要开放一些通道让面板通过,选择安全组 点击修改规则,再点击添加规则 图1: 图2: 按照图中所写添加,想要安全的话按照图1,懒的话按照图2 回到那个黑黑的界面里输入 yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh...","categories": [],
+ "tags": [],
+ "url": "/modpack/serverpack2.html",
+ "teaser": null
+ },{
+ "title": "整合包自带 Java 教程",
+ "excerpt":"背景 想必有些服务器主为此头疼了许久。由于玩家的电脑环境多变,甚至可能仍然有安装着 Java 7 的电脑而无法启动 1.12.2 以上的游戏或者含有 Mod 的客户端。因此服务器主希望能在整合包中自带一个 Java 运行时(或者叫 JRE),从而取代电脑自带的 JVM。接下来本文将介绍两种方法。 名词解释 JRE Java Runtime Environment的缩写。通常可以认为是玩家所使用的 Java 下文所指代的 Java 和 JRE 均可以认为是此版本。 方法一:使用最新版本(推荐) EXE 版本 EXE 版本在 Windows 系统下打开会首先检查同级文件夹下的 jre-arm64、jre-x64 和 jre-x86 文件夹。 检查顺序从上到下依次是: jre-arm64 (ARM 64 位) jre-x64 (x86 64 位) jre-x86 (x86 32 位) 启动优先级如下: 如果玩家电脑的操作系统是x86...","categories": [],
+ "tags": [],
+ "url": "/modpack/bundled-java.html",
+ "teaser": null
+ },{
+ "title": "配置客户端自动更新 (Nginx)",
+ "excerpt":"阅读本文前,请先阅读此文章 前置知识 阅读本文你需要具有以下知识储备: 掌握基础本的 linux 命令操作,比如 cd ls 等 拥有一个 linux 服务器(好像不算知识) Nginx 安装 这里很基础(但是坑比较多)略过,可以看以下参考文档。 https://zhuanlan.zhihu.com/p/515069497 新建静态资源文件夹 我为了省事直接在/根目录下新建了一个 MinecraftClientStatic 文件夹,以后需要作为静态资源的文件都丢这里面。 命令: # 到更目录 cd / # 新建文件夹 mkdir MinecraftClientStatic # 防止nginx无法访问,配置文件夹访问权限 chmod 777 MinecraftClientStatic # 进入文件夹 cd MinecraftClientStatic # 新建一个测试用的文件 touch helloMC.html # 给文件权限 chmod 777 helloMC.html # 编辑html内容 vim...","categories": [],
+ "tags": [],
+ "url": "/modpack/serverpack3.html",
+ "teaser": null
+ },{
+ "title": "模组包报错排查手册",
+ "excerpt":"文件夹结构 首先我们需要先认识Minecraft的文件夹结构 如果你开启了 版本隔离 那么你的文件夹结构如下 .minecraft |*assets # 游戏资源文件夹,存放纹理、声音等资源 |*libraries # 依赖库文件夹,存放运行游戏所需的各种库 |*versions # 版本文件夹,包含所有已安装的Minecraft版本 \\1.16.5-optifine |1.16.5-optifine.jar # 该版本的主程序jar文件 |*saves # 存档文件夹,仅该版本可见 |*resourcepacks # 资源包文件夹,仅该版本可见 |*logs # 日志文件夹,仅该版本可见 |*mods # 模组文件夹,仅该版本可见 |*config # 配置文件夹,仅该版本可见 |*crash-reports # 崩溃报告文件夹,仅该版本可见 ... 如果你没有开启则是这样 .minecraft |*assets # 游戏资源文件夹,存放纹理、声音等资源 |*libraries # 依赖库文件夹,存放运行游戏所需的各种库 |*saves # 存档文件夹,所有版本共用 |*resourcepacks...","categories": [],
+ "tags": [],
+ "url": "/modpack/error-handbook.html",
+ "teaser": null
+ },{
+ "title": "多人联机反馈",
+ "excerpt":"Terracotta | 陶瓦联机 提示 欢迎您填写反馈表单。 我们注意到了 EasyTier 项目。它提供了一种简单、安全、去中心化的异地组网方案,足以承载 Minecraft 的联机需求。 在 EasyTier 开发团队的帮助下,我们决定重新在启动器内提供联机服务。 如要体验陶瓦联机,请遵循以下步骤: 打开 HMCL,然后您可通过 HMCL 左下角 多人联机 入口体验 Terracotta | 陶瓦联机。 目前,HMCL、PCL CE 已实现最基本的互通支持。我们欢迎其他启动器接入 Scaffolding 协议实现更完整的互通功能。 为向尽可能多的玩家免费开放基本联机功能,陶瓦联机将极大程度上基于 P2P。 简单而言,陶瓦联机不会比市面上基于服务器中继的联机方案稳定,但其开销将远远低于其他联机方案。 需要特别提醒的是:联机功能不会更不能取代 Minecraft: Java Edition 服务器。 它的主要目标依然是让朋友之间能共同游玩,而不是长时间的对外开放。 最后,我想感谢一切参与到 EasyTier、Terracotta | 陶瓦联机开发和测试、为 EasyTier 提供打洞和中继服务器的社区志愿者。欢迎大家访问 easytier.cn 深入了解这一项目。 ","categories": [],
+ "tags": [],
+ "url": "/multiplayer/feedback.html",
+ "teaser": null
+ },{
+ "title": "多人联机帮助",
+ "excerpt":"Terracotta | 陶瓦联机 ","categories": [],
+ "tags": [],
+ "url": "/multiplayer/help.html",
+ "teaser": null
+ },]
diff --git a/assets/js/lunr/lunr.js b/assets/js/lunr/lunr.js
new file mode 100644
index 0000000..6aa370f
--- /dev/null
+++ b/assets/js/lunr/lunr.js
@@ -0,0 +1,3475 @@
+/**
+ * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9
+ * Copyright (C) 2020 Oliver Nightingale
+ * @license MIT
+ */
+
+;(function(){
+
+/**
+ * A convenience function for configuring and constructing
+ * a new lunr Index.
+ *
+ * A lunr.Builder instance is created and the pipeline setup
+ * with a trimmer, stop word filter and stemmer.
+ *
+ * This builder object is yielded to the configuration function
+ * that is passed as a parameter, allowing the list of fields
+ * and other builder parameters to be customised.
+ *
+ * All documents _must_ be added within the passed config function.
+ *
+ * @example
+ * var idx = lunr(function () {
+ * this.field('title')
+ * this.field('body')
+ * this.ref('id')
+ *
+ * documents.forEach(function (doc) {
+ * this.add(doc)
+ * }, this)
+ * })
+ *
+ * @see {@link lunr.Builder}
+ * @see {@link lunr.Pipeline}
+ * @see {@link lunr.trimmer}
+ * @see {@link lunr.stopWordFilter}
+ * @see {@link lunr.stemmer}
+ * @namespace {function} lunr
+ */
+var lunr = function (config) {
+ var builder = new lunr.Builder
+
+ builder.pipeline.add(
+ lunr.trimmer,
+ lunr.stopWordFilter,
+ lunr.stemmer
+ )
+
+ builder.searchPipeline.add(
+ lunr.stemmer
+ )
+
+ config.call(builder, builder)
+ return builder.build()
+}
+
+lunr.version = "2.3.9"
+/*!
+ * lunr.utils
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * A namespace containing utils for the rest of the lunr library
+ * @namespace lunr.utils
+ */
+lunr.utils = {}
+
+/**
+ * Print a warning message to the console.
+ *
+ * @param {String} message The message to be printed.
+ * @memberOf lunr.utils
+ * @function
+ */
+lunr.utils.warn = (function (global) {
+ /* eslint-disable no-console */
+ return function (message) {
+ if (global.console && console.warn) {
+ console.warn(message)
+ }
+ }
+ /* eslint-enable no-console */
+})(this)
+
+/**
+ * Convert an object to a string.
+ *
+ * In the case of `null` and `undefined` the function returns
+ * the empty string, in all other cases the result of calling
+ * `toString` on the passed object is returned.
+ *
+ * @param {Any} obj The object to convert to a string.
+ * @return {String} string representation of the passed object.
+ * @memberOf lunr.utils
+ */
+lunr.utils.asString = function (obj) {
+ if (obj === void 0 || obj === null) {
+ return ""
+ } else {
+ return obj.toString()
+ }
+}
+
+/**
+ * Clones an object.
+ *
+ * Will create a copy of an existing object such that any mutations
+ * on the copy cannot affect the original.
+ *
+ * Only shallow objects are supported, passing a nested object to this
+ * function will cause a TypeError.
+ *
+ * Objects with primitives, and arrays of primitives are supported.
+ *
+ * @param {Object} obj The object to clone.
+ * @return {Object} a clone of the passed object.
+ * @throws {TypeError} when a nested object is passed.
+ * @memberOf Utils
+ */
+lunr.utils.clone = function (obj) {
+ if (obj === null || obj === undefined) {
+ return obj
+ }
+
+ var clone = Object.create(null),
+ keys = Object.keys(obj)
+
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i],
+ val = obj[key]
+
+ if (Array.isArray(val)) {
+ clone[key] = val.slice()
+ continue
+ }
+
+ if (typeof val === 'string' ||
+ typeof val === 'number' ||
+ typeof val === 'boolean') {
+ clone[key] = val
+ continue
+ }
+
+ throw new TypeError("clone is not deep and does not support nested objects")
+ }
+
+ return clone
+}
+lunr.FieldRef = function (docRef, fieldName, stringValue) {
+ this.docRef = docRef
+ this.fieldName = fieldName
+ this._stringValue = stringValue
+}
+
+lunr.FieldRef.joiner = "/"
+
+lunr.FieldRef.fromString = function (s) {
+ var n = s.indexOf(lunr.FieldRef.joiner)
+
+ if (n === -1) {
+ throw "malformed field ref string"
+ }
+
+ var fieldRef = s.slice(0, n),
+ docRef = s.slice(n + 1)
+
+ return new lunr.FieldRef (docRef, fieldRef, s)
+}
+
+lunr.FieldRef.prototype.toString = function () {
+ if (this._stringValue == undefined) {
+ this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef
+ }
+
+ return this._stringValue
+}
+/*!
+ * lunr.Set
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * A lunr set.
+ *
+ * @constructor
+ */
+lunr.Set = function (elements) {
+ this.elements = Object.create(null)
+
+ if (elements) {
+ this.length = elements.length
+
+ for (var i = 0; i < this.length; i++) {
+ this.elements[elements[i]] = true
+ }
+ } else {
+ this.length = 0
+ }
+}
+
+/**
+ * A complete set that contains all elements.
+ *
+ * @static
+ * @readonly
+ * @type {lunr.Set}
+ */
+lunr.Set.complete = {
+ intersect: function (other) {
+ return other
+ },
+
+ union: function () {
+ return this
+ },
+
+ contains: function () {
+ return true
+ }
+}
+
+/**
+ * An empty set that contains no elements.
+ *
+ * @static
+ * @readonly
+ * @type {lunr.Set}
+ */
+lunr.Set.empty = {
+ intersect: function () {
+ return this
+ },
+
+ union: function (other) {
+ return other
+ },
+
+ contains: function () {
+ return false
+ }
+}
+
+/**
+ * Returns true if this set contains the specified object.
+ *
+ * @param {object} object - Object whose presence in this set is to be tested.
+ * @returns {boolean} - True if this set contains the specified object.
+ */
+lunr.Set.prototype.contains = function (object) {
+ return !!this.elements[object]
+}
+
+/**
+ * Returns a new set containing only the elements that are present in both
+ * this set and the specified set.
+ *
+ * @param {lunr.Set} other - set to intersect with this set.
+ * @returns {lunr.Set} a new set that is the intersection of this and the specified set.
+ */
+
+lunr.Set.prototype.intersect = function (other) {
+ var a, b, elements, intersection = []
+
+ if (other === lunr.Set.complete) {
+ return this
+ }
+
+ if (other === lunr.Set.empty) {
+ return other
+ }
+
+ if (this.length < other.length) {
+ a = this
+ b = other
+ } else {
+ a = other
+ b = this
+ }
+
+ elements = Object.keys(a.elements)
+
+ for (var i = 0; i < elements.length; i++) {
+ var element = elements[i]
+ if (element in b.elements) {
+ intersection.push(element)
+ }
+ }
+
+ return new lunr.Set (intersection)
+}
+
+/**
+ * Returns a new set combining the elements of this and the specified set.
+ *
+ * @param {lunr.Set} other - set to union with this set.
+ * @return {lunr.Set} a new set that is the union of this and the specified set.
+ */
+
+lunr.Set.prototype.union = function (other) {
+ if (other === lunr.Set.complete) {
+ return lunr.Set.complete
+ }
+
+ if (other === lunr.Set.empty) {
+ return this
+ }
+
+ return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements)))
+}
+/**
+ * A function to calculate the inverse document frequency for
+ * a posting. This is shared between the builder and the index
+ *
+ * @private
+ * @param {object} posting - The posting for a given term
+ * @param {number} documentCount - The total number of documents.
+ */
+lunr.idf = function (posting, documentCount) {
+ var documentsWithTerm = 0
+
+ for (var fieldName in posting) {
+ if (fieldName == '_index') continue // Ignore the term index, its not a field
+ documentsWithTerm += Object.keys(posting[fieldName]).length
+ }
+
+ var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5)
+
+ return Math.log(1 + Math.abs(x))
+}
+
+/**
+ * A token wraps a string representation of a token
+ * as it is passed through the text processing pipeline.
+ *
+ * @constructor
+ * @param {string} [str=''] - The string token being wrapped.
+ * @param {object} [metadata={}] - Metadata associated with this token.
+ */
+lunr.Token = function (str, metadata) {
+ this.str = str || ""
+ this.metadata = metadata || {}
+}
+
+/**
+ * Returns the token string that is being wrapped by this object.
+ *
+ * @returns {string}
+ */
+lunr.Token.prototype.toString = function () {
+ return this.str
+}
+
+/**
+ * A token update function is used when updating or optionally
+ * when cloning a token.
+ *
+ * @callback lunr.Token~updateFunction
+ * @param {string} str - The string representation of the token.
+ * @param {Object} metadata - All metadata associated with this token.
+ */
+
+/**
+ * Applies the given function to the wrapped string token.
+ *
+ * @example
+ * token.update(function (str, metadata) {
+ * return str.toUpperCase()
+ * })
+ *
+ * @param {lunr.Token~updateFunction} fn - A function to apply to the token string.
+ * @returns {lunr.Token}
+ */
+lunr.Token.prototype.update = function (fn) {
+ this.str = fn(this.str, this.metadata)
+ return this
+}
+
+/**
+ * Creates a clone of this token. Optionally a function can be
+ * applied to the cloned token.
+ *
+ * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token.
+ * @returns {lunr.Token}
+ */
+lunr.Token.prototype.clone = function (fn) {
+ fn = fn || function (s) { return s }
+ return new lunr.Token (fn(this.str, this.metadata), this.metadata)
+}
+/*!
+ * lunr.tokenizer
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * A function for splitting a string into tokens ready to be inserted into
+ * the search index. Uses `lunr.tokenizer.separator` to split strings, change
+ * the value of this property to change how strings are split into tokens.
+ *
+ * This tokenizer will convert its parameter to a string by calling `toString` and
+ * then will split this string on the character in `lunr.tokenizer.separator`.
+ * Arrays will have their elements converted to strings and wrapped in a lunr.Token.
+ *
+ * Optional metadata can be passed to the tokenizer, this metadata will be cloned and
+ * added as metadata to every token that is created from the object to be tokenized.
+ *
+ * @static
+ * @param {?(string|object|object[])} obj - The object to convert into tokens
+ * @param {?object} metadata - Optional metadata to associate with every token
+ * @returns {lunr.Token[]}
+ * @see {@link lunr.Pipeline}
+ */
+lunr.tokenizer = function (obj, metadata) {
+ if (obj == null || obj == undefined) {
+ return []
+ }
+
+ if (Array.isArray(obj)) {
+ return obj.map(function (t) {
+ return new lunr.Token(
+ lunr.utils.asString(t).toLowerCase(),
+ lunr.utils.clone(metadata)
+ )
+ })
+ }
+
+ var str = obj.toString().toLowerCase(),
+ len = str.length,
+ tokens = []
+
+ for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {
+ var char = str.charAt(sliceEnd),
+ sliceLength = sliceEnd - sliceStart
+
+ if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) {
+
+ if (sliceLength > 0) {
+ var tokenMetadata = lunr.utils.clone(metadata) || {}
+ tokenMetadata["position"] = [sliceStart, sliceLength]
+ tokenMetadata["index"] = tokens.length
+
+ tokens.push(
+ new lunr.Token (
+ str.slice(sliceStart, sliceEnd),
+ tokenMetadata
+ )
+ )
+ }
+
+ sliceStart = sliceEnd + 1
+ }
+
+ }
+
+ return tokens
+}
+
+/**
+ * The separator used to split a string into tokens. Override this property to change the behaviour of
+ * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.
+ *
+ * @static
+ * @see lunr.tokenizer
+ */
+lunr.tokenizer.separator = /[\s\-]+/
+/*!
+ * lunr.Pipeline
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * lunr.Pipelines maintain an ordered list of functions to be applied to all
+ * tokens in documents entering the search index and queries being ran against
+ * the index.
+ *
+ * An instance of lunr.Index created with the lunr shortcut will contain a
+ * pipeline with a stop word filter and an English language stemmer. Extra
+ * functions can be added before or after either of these functions or these
+ * default functions can be removed.
+ *
+ * When run the pipeline will call each function in turn, passing a token, the
+ * index of that token in the original list of all tokens and finally a list of
+ * all the original tokens.
+ *
+ * The output of functions in the pipeline will be passed to the next function
+ * in the pipeline. To exclude a token from entering the index the function
+ * should return undefined, the rest of the pipeline will not be called with
+ * this token.
+ *
+ * For serialisation of pipelines to work, all functions used in an instance of
+ * a pipeline should be registered with lunr.Pipeline. Registered functions can
+ * then be loaded. If trying to load a serialised pipeline that uses functions
+ * that are not registered an error will be thrown.
+ *
+ * If not planning on serialising the pipeline then registering pipeline functions
+ * is not necessary.
+ *
+ * @constructor
+ */
+lunr.Pipeline = function () {
+ this._stack = []
+}
+
+lunr.Pipeline.registeredFunctions = Object.create(null)
+
+/**
+ * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token
+ * string as well as all known metadata. A pipeline function can mutate the token string
+ * or mutate (or add) metadata for a given token.
+ *
+ * A pipeline function can indicate that the passed token should be discarded by returning
+ * null, undefined or an empty string. This token will not be passed to any downstream pipeline
+ * functions and will not be added to the index.
+ *
+ * Multiple tokens can be returned by returning an array of tokens. Each token will be passed
+ * to any downstream pipeline functions and all will returned tokens will be added to the index.
+ *
+ * Any number of pipeline functions may be chained together using a lunr.Pipeline.
+ *
+ * @interface lunr.PipelineFunction
+ * @param {lunr.Token} token - A token from the document being processed.
+ * @param {number} i - The index of this token in the complete list of tokens for this document/field.
+ * @param {lunr.Token[]} tokens - All tokens for this document/field.
+ * @returns {(?lunr.Token|lunr.Token[])}
+ */
+
+/**
+ * Register a function with the pipeline.
+ *
+ * Functions that are used in the pipeline should be registered if the pipeline
+ * needs to be serialised, or a serialised pipeline needs to be loaded.
+ *
+ * Registering a function does not add it to a pipeline, functions must still be
+ * added to instances of the pipeline for them to be used when running a pipeline.
+ *
+ * @param {lunr.PipelineFunction} fn - The function to check for.
+ * @param {String} label - The label to register this function with
+ */
+lunr.Pipeline.registerFunction = function (fn, label) {
+ if (label in this.registeredFunctions) {
+ lunr.utils.warn('Overwriting existing registered function: ' + label)
+ }
+
+ fn.label = label
+ lunr.Pipeline.registeredFunctions[fn.label] = fn
+}
+
+/**
+ * Warns if the function is not registered as a Pipeline function.
+ *
+ * @param {lunr.PipelineFunction} fn - The function to check for.
+ * @private
+ */
+lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {
+ var isRegistered = fn.label && (fn.label in this.registeredFunctions)
+
+ if (!isRegistered) {
+ lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\n', fn)
+ }
+}
+
+/**
+ * Loads a previously serialised pipeline.
+ *
+ * All functions to be loaded must already be registered with lunr.Pipeline.
+ * If any function from the serialised data has not been registered then an
+ * error will be thrown.
+ *
+ * @param {Object} serialised - The serialised pipeline to load.
+ * @returns {lunr.Pipeline}
+ */
+lunr.Pipeline.load = function (serialised) {
+ var pipeline = new lunr.Pipeline
+
+ serialised.forEach(function (fnName) {
+ var fn = lunr.Pipeline.registeredFunctions[fnName]
+
+ if (fn) {
+ pipeline.add(fn)
+ } else {
+ throw new Error('Cannot load unregistered function: ' + fnName)
+ }
+ })
+
+ return pipeline
+}
+
+/**
+ * Adds new functions to the end of the pipeline.
+ *
+ * Logs a warning if the function has not been registered.
+ *
+ * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline.
+ */
+lunr.Pipeline.prototype.add = function () {
+ var fns = Array.prototype.slice.call(arguments)
+
+ fns.forEach(function (fn) {
+ lunr.Pipeline.warnIfFunctionNotRegistered(fn)
+ this._stack.push(fn)
+ }, this)
+}
+
+/**
+ * Adds a single function after a function that already exists in the
+ * pipeline.
+ *
+ * Logs a warning if the function has not been registered.
+ *
+ * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.
+ * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.
+ */
+lunr.Pipeline.prototype.after = function (existingFn, newFn) {
+ lunr.Pipeline.warnIfFunctionNotRegistered(newFn)
+
+ var pos = this._stack.indexOf(existingFn)
+ if (pos == -1) {
+ throw new Error('Cannot find existingFn')
+ }
+
+ pos = pos + 1
+ this._stack.splice(pos, 0, newFn)
+}
+
+/**
+ * Adds a single function before a function that already exists in the
+ * pipeline.
+ *
+ * Logs a warning if the function has not been registered.
+ *
+ * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.
+ * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.
+ */
+lunr.Pipeline.prototype.before = function (existingFn, newFn) {
+ lunr.Pipeline.warnIfFunctionNotRegistered(newFn)
+
+ var pos = this._stack.indexOf(existingFn)
+ if (pos == -1) {
+ throw new Error('Cannot find existingFn')
+ }
+
+ this._stack.splice(pos, 0, newFn)
+}
+
+/**
+ * Removes a function from the pipeline.
+ *
+ * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.
+ */
+lunr.Pipeline.prototype.remove = function (fn) {
+ var pos = this._stack.indexOf(fn)
+ if (pos == -1) {
+ return
+ }
+
+ this._stack.splice(pos, 1)
+}
+
+/**
+ * Runs the current list of functions that make up the pipeline against the
+ * passed tokens.
+ *
+ * @param {Array} tokens The tokens to run through the pipeline.
+ * @returns {Array}
+ */
+lunr.Pipeline.prototype.run = function (tokens) {
+ var stackLength = this._stack.length
+
+ for (var i = 0; i < stackLength; i++) {
+ var fn = this._stack[i]
+ var memo = []
+
+ for (var j = 0; j < tokens.length; j++) {
+ var result = fn(tokens[j], j, tokens)
+
+ if (result === null || result === void 0 || result === '') continue
+
+ if (Array.isArray(result)) {
+ for (var k = 0; k < result.length; k++) {
+ memo.push(result[k])
+ }
+ } else {
+ memo.push(result)
+ }
+ }
+
+ tokens = memo
+ }
+
+ return tokens
+}
+
+/**
+ * Convenience method for passing a string through a pipeline and getting
+ * strings out. This method takes care of wrapping the passed string in a
+ * token and mapping the resulting tokens back to strings.
+ *
+ * @param {string} str - The string to pass through the pipeline.
+ * @param {?object} metadata - Optional metadata to associate with the token
+ * passed to the pipeline.
+ * @returns {string[]}
+ */
+lunr.Pipeline.prototype.runString = function (str, metadata) {
+ var token = new lunr.Token (str, metadata)
+
+ return this.run([token]).map(function (t) {
+ return t.toString()
+ })
+}
+
+/**
+ * Resets the pipeline by removing any existing processors.
+ *
+ */
+lunr.Pipeline.prototype.reset = function () {
+ this._stack = []
+}
+
+/**
+ * Returns a representation of the pipeline ready for serialisation.
+ *
+ * Logs a warning if the function has not been registered.
+ *
+ * @returns {Array}
+ */
+lunr.Pipeline.prototype.toJSON = function () {
+ return this._stack.map(function (fn) {
+ lunr.Pipeline.warnIfFunctionNotRegistered(fn)
+
+ return fn.label
+ })
+}
+/*!
+ * lunr.Vector
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * A vector is used to construct the vector space of documents and queries. These
+ * vectors support operations to determine the similarity between two documents or
+ * a document and a query.
+ *
+ * Normally no parameters are required for initializing a vector, but in the case of
+ * loading a previously dumped vector the raw elements can be provided to the constructor.
+ *
+ * For performance reasons vectors are implemented with a flat array, where an elements
+ * index is immediately followed by its value. E.g. [index, value, index, value]. This
+ * allows the underlying array to be as sparse as possible and still offer decent
+ * performance when being used for vector calculations.
+ *
+ * @constructor
+ * @param {Number[]} [elements] - The flat list of element index and element value pairs.
+ */
+lunr.Vector = function (elements) {
+ this._magnitude = 0
+ this.elements = elements || []
+}
+
+
+/**
+ * Calculates the position within the vector to insert a given index.
+ *
+ * This is used internally by insert and upsert. If there are duplicate indexes then
+ * the position is returned as if the value for that index were to be updated, but it
+ * is the callers responsibility to check whether there is a duplicate at that index
+ *
+ * @param {Number} insertIdx - The index at which the element should be inserted.
+ * @returns {Number}
+ */
+lunr.Vector.prototype.positionForIndex = function (index) {
+ // For an empty vector the tuple can be inserted at the beginning
+ if (this.elements.length == 0) {
+ return 0
+ }
+
+ var start = 0,
+ end = this.elements.length / 2,
+ sliceLength = end - start,
+ pivotPoint = Math.floor(sliceLength / 2),
+ pivotIndex = this.elements[pivotPoint * 2]
+
+ while (sliceLength > 1) {
+ if (pivotIndex < index) {
+ start = pivotPoint
+ }
+
+ if (pivotIndex > index) {
+ end = pivotPoint
+ }
+
+ if (pivotIndex == index) {
+ break
+ }
+
+ sliceLength = end - start
+ pivotPoint = start + Math.floor(sliceLength / 2)
+ pivotIndex = this.elements[pivotPoint * 2]
+ }
+
+ if (pivotIndex == index) {
+ return pivotPoint * 2
+ }
+
+ if (pivotIndex > index) {
+ return pivotPoint * 2
+ }
+
+ if (pivotIndex < index) {
+ return (pivotPoint + 1) * 2
+ }
+}
+
+/**
+ * Inserts an element at an index within the vector.
+ *
+ * Does not allow duplicates, will throw an error if there is already an entry
+ * for this index.
+ *
+ * @param {Number} insertIdx - The index at which the element should be inserted.
+ * @param {Number} val - The value to be inserted into the vector.
+ */
+lunr.Vector.prototype.insert = function (insertIdx, val) {
+ this.upsert(insertIdx, val, function () {
+ throw "duplicate index"
+ })
+}
+
+/**
+ * Inserts or updates an existing index within the vector.
+ *
+ * @param {Number} insertIdx - The index at which the element should be inserted.
+ * @param {Number} val - The value to be inserted into the vector.
+ * @param {function} fn - A function that is called for updates, the existing value and the
+ * requested value are passed as arguments
+ */
+lunr.Vector.prototype.upsert = function (insertIdx, val, fn) {
+ this._magnitude = 0
+ var position = this.positionForIndex(insertIdx)
+
+ if (this.elements[position] == insertIdx) {
+ this.elements[position + 1] = fn(this.elements[position + 1], val)
+ } else {
+ this.elements.splice(position, 0, insertIdx, val)
+ }
+}
+
+/**
+ * Calculates the magnitude of this vector.
+ *
+ * @returns {Number}
+ */
+lunr.Vector.prototype.magnitude = function () {
+ if (this._magnitude) return this._magnitude
+
+ var sumOfSquares = 0,
+ elementsLength = this.elements.length
+
+ for (var i = 1; i < elementsLength; i += 2) {
+ var val = this.elements[i]
+ sumOfSquares += val * val
+ }
+
+ return this._magnitude = Math.sqrt(sumOfSquares)
+}
+
+/**
+ * Calculates the dot product of this vector and another vector.
+ *
+ * @param {lunr.Vector} otherVector - The vector to compute the dot product with.
+ * @returns {Number}
+ */
+lunr.Vector.prototype.dot = function (otherVector) {
+ var dotProduct = 0,
+ a = this.elements, b = otherVector.elements,
+ aLen = a.length, bLen = b.length,
+ aVal = 0, bVal = 0,
+ i = 0, j = 0
+
+ while (i < aLen && j < bLen) {
+ aVal = a[i], bVal = b[j]
+ if (aVal < bVal) {
+ i += 2
+ } else if (aVal > bVal) {
+ j += 2
+ } else if (aVal == bVal) {
+ dotProduct += a[i + 1] * b[j + 1]
+ i += 2
+ j += 2
+ }
+ }
+
+ return dotProduct
+}
+
+/**
+ * Calculates the similarity between this vector and another vector.
+ *
+ * @param {lunr.Vector} otherVector - The other vector to calculate the
+ * similarity with.
+ * @returns {Number}
+ */
+lunr.Vector.prototype.similarity = function (otherVector) {
+ return this.dot(otherVector) / this.magnitude() || 0
+}
+
+/**
+ * Converts the vector to an array of the elements within the vector.
+ *
+ * @returns {Number[]}
+ */
+lunr.Vector.prototype.toArray = function () {
+ var output = new Array (this.elements.length / 2)
+
+ for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {
+ output[j] = this.elements[i]
+ }
+
+ return output
+}
+
+/**
+ * A JSON serializable representation of the vector.
+ *
+ * @returns {Number[]}
+ */
+lunr.Vector.prototype.toJSON = function () {
+ return this.elements
+}
+/* eslint-disable */
+/*!
+ * lunr.stemmer
+ * Copyright (C) 2020 Oliver Nightingale
+ * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt
+ */
+
+/**
+ * lunr.stemmer is an english language stemmer, this is a JavaScript
+ * implementation of the PorterStemmer taken from http://tartarus.org/~martin
+ *
+ * @static
+ * @implements {lunr.PipelineFunction}
+ * @param {lunr.Token} token - The string to stem
+ * @returns {lunr.Token}
+ * @see {@link lunr.Pipeline}
+ * @function
+ */
+lunr.stemmer = (function(){
+ var step2list = {
+ "ational" : "ate",
+ "tional" : "tion",
+ "enci" : "ence",
+ "anci" : "ance",
+ "izer" : "ize",
+ "bli" : "ble",
+ "alli" : "al",
+ "entli" : "ent",
+ "eli" : "e",
+ "ousli" : "ous",
+ "ization" : "ize",
+ "ation" : "ate",
+ "ator" : "ate",
+ "alism" : "al",
+ "iveness" : "ive",
+ "fulness" : "ful",
+ "ousness" : "ous",
+ "aliti" : "al",
+ "iviti" : "ive",
+ "biliti" : "ble",
+ "logi" : "log"
+ },
+
+ step3list = {
+ "icate" : "ic",
+ "ative" : "",
+ "alize" : "al",
+ "iciti" : "ic",
+ "ical" : "ic",
+ "ful" : "",
+ "ness" : ""
+ },
+
+ c = "[^aeiou]", // consonant
+ v = "[aeiouy]", // vowel
+ C = c + "[^aeiouy]*", // consonant sequence
+ V = v + "[aeiou]*", // vowel sequence
+
+ mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0
+ meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1
+ mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1
+ s_v = "^(" + C + ")?" + v; // vowel in stem
+
+ var re_mgr0 = new RegExp(mgr0);
+ var re_mgr1 = new RegExp(mgr1);
+ var re_meq1 = new RegExp(meq1);
+ var re_s_v = new RegExp(s_v);
+
+ var re_1a = /^(.+?)(ss|i)es$/;
+ var re2_1a = /^(.+?)([^s])s$/;
+ var re_1b = /^(.+?)eed$/;
+ var re2_1b = /^(.+?)(ed|ing)$/;
+ var re_1b_2 = /.$/;
+ var re2_1b_2 = /(at|bl|iz)$/;
+ var re3_1b_2 = new RegExp("([^aeiouylsz])\\1$");
+ var re4_1b_2 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+
+ var re_1c = /^(.+?[^aeiou])y$/;
+ var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;
+
+ var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;
+
+ var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;
+ var re2_4 = /^(.+?)(s|t)(ion)$/;
+
+ var re_5 = /^(.+?)e$/;
+ var re_5_1 = /ll$/;
+ var re3_5 = new RegExp("^" + C + v + "[^aeiouwxy]$");
+
+ var porterStemmer = function porterStemmer(w) {
+ var stem,
+ suffix,
+ firstch,
+ re,
+ re2,
+ re3,
+ re4;
+
+ if (w.length < 3) { return w; }
+
+ firstch = w.substr(0,1);
+ if (firstch == "y") {
+ w = firstch.toUpperCase() + w.substr(1);
+ }
+
+ // Step 1a
+ re = re_1a
+ re2 = re2_1a;
+
+ if (re.test(w)) { w = w.replace(re,"$1$2"); }
+ else if (re2.test(w)) { w = w.replace(re2,"$1$2"); }
+
+ // Step 1b
+ re = re_1b;
+ re2 = re2_1b;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ re = re_mgr0;
+ if (re.test(fp[1])) {
+ re = re_1b_2;
+ w = w.replace(re,"");
+ }
+ } else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1];
+ re2 = re_s_v;
+ if (re2.test(stem)) {
+ w = stem;
+ re2 = re2_1b_2;
+ re3 = re3_1b_2;
+ re4 = re4_1b_2;
+ if (re2.test(w)) { w = w + "e"; }
+ else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,""); }
+ else if (re4.test(w)) { w = w + "e"; }
+ }
+ }
+
+ // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)
+ re = re_1c;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ w = stem + "i";
+ }
+
+ // Step 2
+ re = re_2;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = re_mgr0;
+ if (re.test(stem)) {
+ w = stem + step2list[suffix];
+ }
+ }
+
+ // Step 3
+ re = re_3;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ suffix = fp[2];
+ re = re_mgr0;
+ if (re.test(stem)) {
+ w = stem + step3list[suffix];
+ }
+ }
+
+ // Step 4
+ re = re_4;
+ re2 = re2_4;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = re_mgr1;
+ if (re.test(stem)) {
+ w = stem;
+ }
+ } else if (re2.test(w)) {
+ var fp = re2.exec(w);
+ stem = fp[1] + fp[2];
+ re2 = re_mgr1;
+ if (re2.test(stem)) {
+ w = stem;
+ }
+ }
+
+ // Step 5
+ re = re_5;
+ if (re.test(w)) {
+ var fp = re.exec(w);
+ stem = fp[1];
+ re = re_mgr1;
+ re2 = re_meq1;
+ re3 = re3_5;
+ if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {
+ w = stem;
+ }
+ }
+
+ re = re_5_1;
+ re2 = re_mgr1;
+ if (re.test(w) && re2.test(w)) {
+ re = re_1b_2;
+ w = w.replace(re,"");
+ }
+
+ // and turn initial Y back to y
+
+ if (firstch == "y") {
+ w = firstch.toLowerCase() + w.substr(1);
+ }
+
+ return w;
+ };
+
+ return function (token) {
+ return token.update(porterStemmer);
+ }
+})();
+
+lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer')
+/*!
+ * lunr.stopWordFilter
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * lunr.generateStopWordFilter builds a stopWordFilter function from the provided
+ * list of stop words.
+ *
+ * The built in lunr.stopWordFilter is built using this generator and can be used
+ * to generate custom stopWordFilters for applications or non English languages.
+ *
+ * @function
+ * @param {Array} token The token to pass through the filter
+ * @returns {lunr.PipelineFunction}
+ * @see lunr.Pipeline
+ * @see lunr.stopWordFilter
+ */
+lunr.generateStopWordFilter = function (stopWords) {
+ var words = stopWords.reduce(function (memo, stopWord) {
+ memo[stopWord] = stopWord
+ return memo
+ }, {})
+
+ return function (token) {
+ if (token && words[token.toString()] !== token.toString()) return token
+ }
+}
+
+/**
+ * lunr.stopWordFilter is an English language stop word list filter, any words
+ * contained in the list will not be passed through the filter.
+ *
+ * This is intended to be used in the Pipeline. If the token does not pass the
+ * filter then undefined will be returned.
+ *
+ * @function
+ * @implements {lunr.PipelineFunction}
+ * @params {lunr.Token} token - A token to check for being a stop word.
+ * @returns {lunr.Token}
+ * @see {@link lunr.Pipeline}
+ */
+lunr.stopWordFilter = lunr.generateStopWordFilter([
+ 'a',
+ 'able',
+ 'about',
+ 'across',
+ 'after',
+ 'all',
+ 'almost',
+ 'also',
+ 'am',
+ 'among',
+ 'an',
+ 'and',
+ 'any',
+ 'are',
+ 'as',
+ 'at',
+ 'be',
+ 'because',
+ 'been',
+ 'but',
+ 'by',
+ 'can',
+ 'cannot',
+ 'could',
+ 'dear',
+ 'did',
+ 'do',
+ 'does',
+ 'either',
+ 'else',
+ 'ever',
+ 'every',
+ 'for',
+ 'from',
+ 'get',
+ 'got',
+ 'had',
+ 'has',
+ 'have',
+ 'he',
+ 'her',
+ 'hers',
+ 'him',
+ 'his',
+ 'how',
+ 'however',
+ 'i',
+ 'if',
+ 'in',
+ 'into',
+ 'is',
+ 'it',
+ 'its',
+ 'just',
+ 'least',
+ 'let',
+ 'like',
+ 'likely',
+ 'may',
+ 'me',
+ 'might',
+ 'most',
+ 'must',
+ 'my',
+ 'neither',
+ 'no',
+ 'nor',
+ 'not',
+ 'of',
+ 'off',
+ 'often',
+ 'on',
+ 'only',
+ 'or',
+ 'other',
+ 'our',
+ 'own',
+ 'rather',
+ 'said',
+ 'say',
+ 'says',
+ 'she',
+ 'should',
+ 'since',
+ 'so',
+ 'some',
+ 'than',
+ 'that',
+ 'the',
+ 'their',
+ 'them',
+ 'then',
+ 'there',
+ 'these',
+ 'they',
+ 'this',
+ 'tis',
+ 'to',
+ 'too',
+ 'twas',
+ 'us',
+ 'wants',
+ 'was',
+ 'we',
+ 'were',
+ 'what',
+ 'when',
+ 'where',
+ 'which',
+ 'while',
+ 'who',
+ 'whom',
+ 'why',
+ 'will',
+ 'with',
+ 'would',
+ 'yet',
+ 'you',
+ 'your'
+])
+
+lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter')
+/*!
+ * lunr.trimmer
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * lunr.trimmer is a pipeline function for trimming non word
+ * characters from the beginning and end of tokens before they
+ * enter the index.
+ *
+ * This implementation may not work correctly for non latin
+ * characters and should either be removed or adapted for use
+ * with languages with non-latin characters.
+ *
+ * @static
+ * @implements {lunr.PipelineFunction}
+ * @param {lunr.Token} token The token to pass through the filter
+ * @returns {lunr.Token}
+ * @see lunr.Pipeline
+ */
+lunr.trimmer = function (token) {
+ return token.update(function (s) {
+ return s.replace(/^\W+/, '').replace(/\W+$/, '')
+ })
+}
+
+lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer')
+/*!
+ * lunr.TokenSet
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * A token set is used to store the unique list of all tokens
+ * within an index. Token sets are also used to represent an
+ * incoming query to the index, this query token set and index
+ * token set are then intersected to find which tokens to look
+ * up in the inverted index.
+ *
+ * A token set can hold multiple tokens, as in the case of the
+ * index token set, or it can hold a single token as in the
+ * case of a simple query token set.
+ *
+ * Additionally token sets are used to perform wildcard matching.
+ * Leading, contained and trailing wildcards are supported, and
+ * from this edit distance matching can also be provided.
+ *
+ * Token sets are implemented as a minimal finite state automata,
+ * where both common prefixes and suffixes are shared between tokens.
+ * This helps to reduce the space used for storing the token set.
+ *
+ * @constructor
+ */
+lunr.TokenSet = function () {
+ this.final = false
+ this.edges = {}
+ this.id = lunr.TokenSet._nextId
+ lunr.TokenSet._nextId += 1
+}
+
+/**
+ * Keeps track of the next, auto increment, identifier to assign
+ * to a new tokenSet.
+ *
+ * TokenSets require a unique identifier to be correctly minimised.
+ *
+ * @private
+ */
+lunr.TokenSet._nextId = 1
+
+/**
+ * Creates a TokenSet instance from the given sorted array of words.
+ *
+ * @param {String[]} arr - A sorted array of strings to create the set from.
+ * @returns {lunr.TokenSet}
+ * @throws Will throw an error if the input array is not sorted.
+ */
+lunr.TokenSet.fromArray = function (arr) {
+ var builder = new lunr.TokenSet.Builder
+
+ for (var i = 0, len = arr.length; i < len; i++) {
+ builder.insert(arr[i])
+ }
+
+ builder.finish()
+ return builder.root
+}
+
+/**
+ * Creates a token set from a query clause.
+ *
+ * @private
+ * @param {Object} clause - A single clause from lunr.Query.
+ * @param {string} clause.term - The query clause term.
+ * @param {number} [clause.editDistance] - The optional edit distance for the term.
+ * @returns {lunr.TokenSet}
+ */
+lunr.TokenSet.fromClause = function (clause) {
+ if ('editDistance' in clause) {
+ return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance)
+ } else {
+ return lunr.TokenSet.fromString(clause.term)
+ }
+}
+
+/**
+ * Creates a token set representing a single string with a specified
+ * edit distance.
+ *
+ * Insertions, deletions, substitutions and transpositions are each
+ * treated as an edit distance of 1.
+ *
+ * Increasing the allowed edit distance will have a dramatic impact
+ * on the performance of both creating and intersecting these TokenSets.
+ * It is advised to keep the edit distance less than 3.
+ *
+ * @param {string} str - The string to create the token set from.
+ * @param {number} editDistance - The allowed edit distance to match.
+ * @returns {lunr.Vector}
+ */
+lunr.TokenSet.fromFuzzyString = function (str, editDistance) {
+ var root = new lunr.TokenSet
+
+ var stack = [{
+ node: root,
+ editsRemaining: editDistance,
+ str: str
+ }]
+
+ while (stack.length) {
+ var frame = stack.pop()
+
+ // no edit
+ if (frame.str.length > 0) {
+ var char = frame.str.charAt(0),
+ noEditNode
+
+ if (char in frame.node.edges) {
+ noEditNode = frame.node.edges[char]
+ } else {
+ noEditNode = new lunr.TokenSet
+ frame.node.edges[char] = noEditNode
+ }
+
+ if (frame.str.length == 1) {
+ noEditNode.final = true
+ }
+
+ stack.push({
+ node: noEditNode,
+ editsRemaining: frame.editsRemaining,
+ str: frame.str.slice(1)
+ })
+ }
+
+ if (frame.editsRemaining == 0) {
+ continue
+ }
+
+ // insertion
+ if ("*" in frame.node.edges) {
+ var insertionNode = frame.node.edges["*"]
+ } else {
+ var insertionNode = new lunr.TokenSet
+ frame.node.edges["*"] = insertionNode
+ }
+
+ if (frame.str.length == 0) {
+ insertionNode.final = true
+ }
+
+ stack.push({
+ node: insertionNode,
+ editsRemaining: frame.editsRemaining - 1,
+ str: frame.str
+ })
+
+ // deletion
+ // can only do a deletion if we have enough edits remaining
+ // and if there are characters left to delete in the string
+ if (frame.str.length > 1) {
+ stack.push({
+ node: frame.node,
+ editsRemaining: frame.editsRemaining - 1,
+ str: frame.str.slice(1)
+ })
+ }
+
+ // deletion
+ // just removing the last character from the str
+ if (frame.str.length == 1) {
+ frame.node.final = true
+ }
+
+ // substitution
+ // can only do a substitution if we have enough edits remaining
+ // and if there are characters left to substitute
+ if (frame.str.length >= 1) {
+ if ("*" in frame.node.edges) {
+ var substitutionNode = frame.node.edges["*"]
+ } else {
+ var substitutionNode = new lunr.TokenSet
+ frame.node.edges["*"] = substitutionNode
+ }
+
+ if (frame.str.length == 1) {
+ substitutionNode.final = true
+ }
+
+ stack.push({
+ node: substitutionNode,
+ editsRemaining: frame.editsRemaining - 1,
+ str: frame.str.slice(1)
+ })
+ }
+
+ // transposition
+ // can only do a transposition if there are edits remaining
+ // and there are enough characters to transpose
+ if (frame.str.length > 1) {
+ var charA = frame.str.charAt(0),
+ charB = frame.str.charAt(1),
+ transposeNode
+
+ if (charB in frame.node.edges) {
+ transposeNode = frame.node.edges[charB]
+ } else {
+ transposeNode = new lunr.TokenSet
+ frame.node.edges[charB] = transposeNode
+ }
+
+ if (frame.str.length == 1) {
+ transposeNode.final = true
+ }
+
+ stack.push({
+ node: transposeNode,
+ editsRemaining: frame.editsRemaining - 1,
+ str: charA + frame.str.slice(2)
+ })
+ }
+ }
+
+ return root
+}
+
+/**
+ * Creates a TokenSet from a string.
+ *
+ * The string may contain one or more wildcard characters (*)
+ * that will allow wildcard matching when intersecting with
+ * another TokenSet.
+ *
+ * @param {string} str - The string to create a TokenSet from.
+ * @returns {lunr.TokenSet}
+ */
+lunr.TokenSet.fromString = function (str) {
+ var node = new lunr.TokenSet,
+ root = node
+
+ /*
+ * Iterates through all characters within the passed string
+ * appending a node for each character.
+ *
+ * When a wildcard character is found then a self
+ * referencing edge is introduced to continually match
+ * any number of any characters.
+ */
+ for (var i = 0, len = str.length; i < len; i++) {
+ var char = str[i],
+ final = (i == len - 1)
+
+ if (char == "*") {
+ node.edges[char] = node
+ node.final = final
+
+ } else {
+ var next = new lunr.TokenSet
+ next.final = final
+
+ node.edges[char] = next
+ node = next
+ }
+ }
+
+ return root
+}
+
+/**
+ * Converts this TokenSet into an array of strings
+ * contained within the TokenSet.
+ *
+ * This is not intended to be used on a TokenSet that
+ * contains wildcards, in these cases the results are
+ * undefined and are likely to cause an infinite loop.
+ *
+ * @returns {string[]}
+ */
+lunr.TokenSet.prototype.toArray = function () {
+ var words = []
+
+ var stack = [{
+ prefix: "",
+ node: this
+ }]
+
+ while (stack.length) {
+ var frame = stack.pop(),
+ edges = Object.keys(frame.node.edges),
+ len = edges.length
+
+ if (frame.node.final) {
+ /* In Safari, at this point the prefix is sometimes corrupted, see:
+ * https://github.com/olivernn/lunr.js/issues/279 Calling any
+ * String.prototype method forces Safari to "cast" this string to what
+ * it's supposed to be, fixing the bug. */
+ frame.prefix.charAt(0)
+ words.push(frame.prefix)
+ }
+
+ for (var i = 0; i < len; i++) {
+ var edge = edges[i]
+
+ stack.push({
+ prefix: frame.prefix.concat(edge),
+ node: frame.node.edges[edge]
+ })
+ }
+ }
+
+ return words
+}
+
+/**
+ * Generates a string representation of a TokenSet.
+ *
+ * This is intended to allow TokenSets to be used as keys
+ * in objects, largely to aid the construction and minimisation
+ * of a TokenSet. As such it is not designed to be a human
+ * friendly representation of the TokenSet.
+ *
+ * @returns {string}
+ */
+lunr.TokenSet.prototype.toString = function () {
+ // NOTE: Using Object.keys here as this.edges is very likely
+ // to enter 'hash-mode' with many keys being added
+ //
+ // avoiding a for-in loop here as it leads to the function
+ // being de-optimised (at least in V8). From some simple
+ // benchmarks the performance is comparable, but allowing
+ // V8 to optimize may mean easy performance wins in the future.
+
+ if (this._str) {
+ return this._str
+ }
+
+ var str = this.final ? '1' : '0',
+ labels = Object.keys(this.edges).sort(),
+ len = labels.length
+
+ for (var i = 0; i < len; i++) {
+ var label = labels[i],
+ node = this.edges[label]
+
+ str = str + label + node.id
+ }
+
+ return str
+}
+
+/**
+ * Returns a new TokenSet that is the intersection of
+ * this TokenSet and the passed TokenSet.
+ *
+ * This intersection will take into account any wildcards
+ * contained within the TokenSet.
+ *
+ * @param {lunr.TokenSet} b - An other TokenSet to intersect with.
+ * @returns {lunr.TokenSet}
+ */
+lunr.TokenSet.prototype.intersect = function (b) {
+ var output = new lunr.TokenSet,
+ frame = undefined
+
+ var stack = [{
+ qNode: b,
+ output: output,
+ node: this
+ }]
+
+ while (stack.length) {
+ frame = stack.pop()
+
+ // NOTE: As with the #toString method, we are using
+ // Object.keys and a for loop instead of a for-in loop
+ // as both of these objects enter 'hash' mode, causing
+ // the function to be de-optimised in V8
+ var qEdges = Object.keys(frame.qNode.edges),
+ qLen = qEdges.length,
+ nEdges = Object.keys(frame.node.edges),
+ nLen = nEdges.length
+
+ for (var q = 0; q < qLen; q++) {
+ var qEdge = qEdges[q]
+
+ for (var n = 0; n < nLen; n++) {
+ var nEdge = nEdges[n]
+
+ if (nEdge == qEdge || qEdge == '*') {
+ var node = frame.node.edges[nEdge],
+ qNode = frame.qNode.edges[qEdge],
+ final = node.final && qNode.final,
+ next = undefined
+
+ if (nEdge in frame.output.edges) {
+ // an edge already exists for this character
+ // no need to create a new node, just set the finality
+ // bit unless this node is already final
+ next = frame.output.edges[nEdge]
+ next.final = next.final || final
+
+ } else {
+ // no edge exists yet, must create one
+ // set the finality bit and insert it
+ // into the output
+ next = new lunr.TokenSet
+ next.final = final
+ frame.output.edges[nEdge] = next
+ }
+
+ stack.push({
+ qNode: qNode,
+ output: next,
+ node: node
+ })
+ }
+ }
+ }
+ }
+
+ return output
+}
+lunr.TokenSet.Builder = function () {
+ this.previousWord = ""
+ this.root = new lunr.TokenSet
+ this.uncheckedNodes = []
+ this.minimizedNodes = {}
+}
+
+lunr.TokenSet.Builder.prototype.insert = function (word) {
+ var node,
+ commonPrefix = 0
+
+ if (word < this.previousWord) {
+ throw new Error ("Out of order word insertion")
+ }
+
+ for (var i = 0; i < word.length && i < this.previousWord.length; i++) {
+ if (word[i] != this.previousWord[i]) break
+ commonPrefix++
+ }
+
+ this.minimize(commonPrefix)
+
+ if (this.uncheckedNodes.length == 0) {
+ node = this.root
+ } else {
+ node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child
+ }
+
+ for (var i = commonPrefix; i < word.length; i++) {
+ var nextNode = new lunr.TokenSet,
+ char = word[i]
+
+ node.edges[char] = nextNode
+
+ this.uncheckedNodes.push({
+ parent: node,
+ char: char,
+ child: nextNode
+ })
+
+ node = nextNode
+ }
+
+ node.final = true
+ this.previousWord = word
+}
+
+lunr.TokenSet.Builder.prototype.finish = function () {
+ this.minimize(0)
+}
+
+lunr.TokenSet.Builder.prototype.minimize = function (downTo) {
+ for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) {
+ var node = this.uncheckedNodes[i],
+ childKey = node.child.toString()
+
+ if (childKey in this.minimizedNodes) {
+ node.parent.edges[node.char] = this.minimizedNodes[childKey]
+ } else {
+ // Cache the key for this node since
+ // we know it can't change anymore
+ node.child._str = childKey
+
+ this.minimizedNodes[childKey] = node.child
+ }
+
+ this.uncheckedNodes.pop()
+ }
+}
+/*!
+ * lunr.Index
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * An index contains the built index of all documents and provides a query interface
+ * to the index.
+ *
+ * Usually instances of lunr.Index will not be created using this constructor, instead
+ * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be
+ * used to load previously built and serialized indexes.
+ *
+ * @constructor
+ * @param {Object} attrs - The attributes of the built search index.
+ * @param {Object} attrs.invertedIndex - An index of term/field to document reference.
+ * @param {Object} attrs.fieldVectors - Field vectors
+ * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens.
+ * @param {string[]} attrs.fields - The names of indexed document fields.
+ * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms.
+ */
+lunr.Index = function (attrs) {
+ this.invertedIndex = attrs.invertedIndex
+ this.fieldVectors = attrs.fieldVectors
+ this.tokenSet = attrs.tokenSet
+ this.fields = attrs.fields
+ this.pipeline = attrs.pipeline
+}
+
+/**
+ * A result contains details of a document matching a search query.
+ * @typedef {Object} lunr.Index~Result
+ * @property {string} ref - The reference of the document this result represents.
+ * @property {number} score - A number between 0 and 1 representing how similar this document is to the query.
+ * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match.
+ */
+
+/**
+ * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple
+ * query language which itself is parsed into an instance of lunr.Query.
+ *
+ * For programmatically building queries it is advised to directly use lunr.Query, the query language
+ * is best used for human entered text rather than program generated text.
+ *
+ * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported
+ * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello'
+ * or 'world', though those that contain both will rank higher in the results.
+ *
+ * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can
+ * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding
+ * wildcards will increase the number of documents that will be found but can also have a negative
+ * impact on query performance, especially with wildcards at the beginning of a term.
+ *
+ * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term
+ * hello in the title field will match this query. Using a field not present in the index will lead
+ * to an error being thrown.
+ *
+ * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term
+ * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported
+ * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2.
+ * Avoid large values for edit distance to improve query performance.
+ *
+ * Each term also supports a presence modifier. By default a term's presence in document is optional, however
+ * this can be changed to either required or prohibited. For a term's presence to be required in a document the
+ * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and
+ * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not
+ * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'.
+ *
+ * To escape special characters the backslash character '\' can be used, this allows searches to include
+ * characters that would normally be considered modifiers, e.g. `foo\~2` will search for a term "foo~2" instead
+ * of attempting to apply a boost of 2 to the search term "foo".
+ *
+ * @typedef {string} lunr.Index~QueryString
+ * @example
Simple single term query
+ * hello
+ * @example
Multiple term query
+ * hello world
+ * @example
term scoped to a field
+ * title:hello
+ * @example
term with a boost of 10
+ * hello^10
+ * @example
term with an edit distance of 2
+ * hello~2
+ * @example
terms with presence modifiers
+ * -foo +bar baz
+ */
+
+/**
+ * Performs a search against the index using lunr query syntax.
+ *
+ * Results will be returned sorted by their score, the most relevant results
+ * will be returned first. For details on how the score is calculated, please see
+ * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}.
+ *
+ * For more programmatic querying use lunr.Index#query.
+ *
+ * @param {lunr.Index~QueryString} queryString - A string containing a lunr query.
+ * @throws {lunr.QueryParseError} If the passed query string cannot be parsed.
+ * @returns {lunr.Index~Result[]}
+ */
+lunr.Index.prototype.search = function (queryString) {
+ return this.query(function (query) {
+ var parser = new lunr.QueryParser(queryString, query)
+ parser.parse()
+ })
+}
+
+/**
+ * A query builder callback provides a query object to be used to express
+ * the query to perform on the index.
+ *
+ * @callback lunr.Index~queryBuilder
+ * @param {lunr.Query} query - The query object to build up.
+ * @this lunr.Query
+ */
+
+/**
+ * Performs a query against the index using the yielded lunr.Query object.
+ *
+ * If performing programmatic queries against the index, this method is preferred
+ * over lunr.Index#search so as to avoid the additional query parsing overhead.
+ *
+ * A query object is yielded to the supplied function which should be used to
+ * express the query to be run against the index.
+ *
+ * Note that although this function takes a callback parameter it is _not_ an
+ * asynchronous operation, the callback is just yielded a query object to be
+ * customized.
+ *
+ * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query.
+ * @returns {lunr.Index~Result[]}
+ */
+lunr.Index.prototype.query = function (fn) {
+ // for each query clause
+ // * process terms
+ // * expand terms from token set
+ // * find matching documents and metadata
+ // * get document vectors
+ // * score documents
+
+ var query = new lunr.Query(this.fields),
+ matchingFields = Object.create(null),
+ queryVectors = Object.create(null),
+ termFieldCache = Object.create(null),
+ requiredMatches = Object.create(null),
+ prohibitedMatches = Object.create(null)
+
+ /*
+ * To support field level boosts a query vector is created per
+ * field. An empty vector is eagerly created to support negated
+ * queries.
+ */
+ for (var i = 0; i < this.fields.length; i++) {
+ queryVectors[this.fields[i]] = new lunr.Vector
+ }
+
+ fn.call(query, query)
+
+ for (var i = 0; i < query.clauses.length; i++) {
+ /*
+ * Unless the pipeline has been disabled for this term, which is
+ * the case for terms with wildcards, we need to pass the clause
+ * term through the search pipeline. A pipeline returns an array
+ * of processed terms. Pipeline functions may expand the passed
+ * term, which means we may end up performing multiple index lookups
+ * for a single query term.
+ */
+ var clause = query.clauses[i],
+ terms = null,
+ clauseMatches = lunr.Set.empty
+
+ if (clause.usePipeline) {
+ terms = this.pipeline.runString(clause.term, {
+ fields: clause.fields
+ })
+ } else {
+ terms = [clause.term]
+ }
+
+ for (var m = 0; m < terms.length; m++) {
+ var term = terms[m]
+
+ /*
+ * Each term returned from the pipeline needs to use the same query
+ * clause object, e.g. the same boost and or edit distance. The
+ * simplest way to do this is to re-use the clause object but mutate
+ * its term property.
+ */
+ clause.term = term
+
+ /*
+ * From the term in the clause we create a token set which will then
+ * be used to intersect the indexes token set to get a list of terms
+ * to lookup in the inverted index
+ */
+ var termTokenSet = lunr.TokenSet.fromClause(clause),
+ expandedTerms = this.tokenSet.intersect(termTokenSet).toArray()
+
+ /*
+ * If a term marked as required does not exist in the tokenSet it is
+ * impossible for the search to return any matches. We set all the field
+ * scoped required matches set to empty and stop examining any further
+ * clauses.
+ */
+ if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) {
+ for (var k = 0; k < clause.fields.length; k++) {
+ var field = clause.fields[k]
+ requiredMatches[field] = lunr.Set.empty
+ }
+
+ break
+ }
+
+ for (var j = 0; j < expandedTerms.length; j++) {
+ /*
+ * For each term get the posting and termIndex, this is required for
+ * building the query vector.
+ */
+ var expandedTerm = expandedTerms[j],
+ posting = this.invertedIndex[expandedTerm],
+ termIndex = posting._index
+
+ for (var k = 0; k < clause.fields.length; k++) {
+ /*
+ * For each field that this query term is scoped by (by default
+ * all fields are in scope) we need to get all the document refs
+ * that have this term in that field.
+ *
+ * The posting is the entry in the invertedIndex for the matching
+ * term from above.
+ */
+ var field = clause.fields[k],
+ fieldPosting = posting[field],
+ matchingDocumentRefs = Object.keys(fieldPosting),
+ termField = expandedTerm + "/" + field,
+ matchingDocumentsSet = new lunr.Set(matchingDocumentRefs)
+
+ /*
+ * if the presence of this term is required ensure that the matching
+ * documents are added to the set of required matches for this clause.
+ *
+ */
+ if (clause.presence == lunr.Query.presence.REQUIRED) {
+ clauseMatches = clauseMatches.union(matchingDocumentsSet)
+
+ if (requiredMatches[field] === undefined) {
+ requiredMatches[field] = lunr.Set.complete
+ }
+ }
+
+ /*
+ * if the presence of this term is prohibited ensure that the matching
+ * documents are added to the set of prohibited matches for this field,
+ * creating that set if it does not yet exist.
+ */
+ if (clause.presence == lunr.Query.presence.PROHIBITED) {
+ if (prohibitedMatches[field] === undefined) {
+ prohibitedMatches[field] = lunr.Set.empty
+ }
+
+ prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet)
+
+ /*
+ * Prohibited matches should not be part of the query vector used for
+ * similarity scoring and no metadata should be extracted so we continue
+ * to the next field
+ */
+ continue
+ }
+
+ /*
+ * The query field vector is populated using the termIndex found for
+ * the term and a unit value with the appropriate boost applied.
+ * Using upsert because there could already be an entry in the vector
+ * for the term we are working with. In that case we just add the scores
+ * together.
+ */
+ queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b })
+
+ /**
+ * If we've already seen this term, field combo then we've already collected
+ * the matching documents and metadata, no need to go through all that again
+ */
+ if (termFieldCache[termField]) {
+ continue
+ }
+
+ for (var l = 0; l < matchingDocumentRefs.length; l++) {
+ /*
+ * All metadata for this term/field/document triple
+ * are then extracted and collected into an instance
+ * of lunr.MatchData ready to be returned in the query
+ * results
+ */
+ var matchingDocumentRef = matchingDocumentRefs[l],
+ matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field),
+ metadata = fieldPosting[matchingDocumentRef],
+ fieldMatch
+
+ if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) {
+ matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata)
+ } else {
+ fieldMatch.add(expandedTerm, field, metadata)
+ }
+
+ }
+
+ termFieldCache[termField] = true
+ }
+ }
+ }
+
+ /**
+ * If the presence was required we need to update the requiredMatches field sets.
+ * We do this after all fields for the term have collected their matches because
+ * the clause terms presence is required in _any_ of the fields not _all_ of the
+ * fields.
+ */
+ if (clause.presence === lunr.Query.presence.REQUIRED) {
+ for (var k = 0; k < clause.fields.length; k++) {
+ var field = clause.fields[k]
+ requiredMatches[field] = requiredMatches[field].intersect(clauseMatches)
+ }
+ }
+ }
+
+ /**
+ * Need to combine the field scoped required and prohibited
+ * matching documents into a global set of required and prohibited
+ * matches
+ */
+ var allRequiredMatches = lunr.Set.complete,
+ allProhibitedMatches = lunr.Set.empty
+
+ for (var i = 0; i < this.fields.length; i++) {
+ var field = this.fields[i]
+
+ if (requiredMatches[field]) {
+ allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field])
+ }
+
+ if (prohibitedMatches[field]) {
+ allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field])
+ }
+ }
+
+ var matchingFieldRefs = Object.keys(matchingFields),
+ results = [],
+ matches = Object.create(null)
+
+ /*
+ * If the query is negated (contains only prohibited terms)
+ * we need to get _all_ fieldRefs currently existing in the
+ * index. This is only done when we know that the query is
+ * entirely prohibited terms to avoid any cost of getting all
+ * fieldRefs unnecessarily.
+ *
+ * Additionally, blank MatchData must be created to correctly
+ * populate the results.
+ */
+ if (query.isNegated()) {
+ matchingFieldRefs = Object.keys(this.fieldVectors)
+
+ for (var i = 0; i < matchingFieldRefs.length; i++) {
+ var matchingFieldRef = matchingFieldRefs[i]
+ var fieldRef = lunr.FieldRef.fromString(matchingFieldRef)
+ matchingFields[matchingFieldRef] = new lunr.MatchData
+ }
+ }
+
+ for (var i = 0; i < matchingFieldRefs.length; i++) {
+ /*
+ * Currently we have document fields that match the query, but we
+ * need to return documents. The matchData and scores are combined
+ * from multiple fields belonging to the same document.
+ *
+ * Scores are calculated by field, using the query vectors created
+ * above, and combined into a final document score using addition.
+ */
+ var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]),
+ docRef = fieldRef.docRef
+
+ if (!allRequiredMatches.contains(docRef)) {
+ continue
+ }
+
+ if (allProhibitedMatches.contains(docRef)) {
+ continue
+ }
+
+ var fieldVector = this.fieldVectors[fieldRef],
+ score = queryVectors[fieldRef.fieldName].similarity(fieldVector),
+ docMatch
+
+ if ((docMatch = matches[docRef]) !== undefined) {
+ docMatch.score += score
+ docMatch.matchData.combine(matchingFields[fieldRef])
+ } else {
+ var match = {
+ ref: docRef,
+ score: score,
+ matchData: matchingFields[fieldRef]
+ }
+ matches[docRef] = match
+ results.push(match)
+ }
+ }
+
+ /*
+ * Sort the results objects by score, highest first.
+ */
+ return results.sort(function (a, b) {
+ return b.score - a.score
+ })
+}
+
+/**
+ * Prepares the index for JSON serialization.
+ *
+ * The schema for this JSON blob will be described in a
+ * separate JSON schema file.
+ *
+ * @returns {Object}
+ */
+lunr.Index.prototype.toJSON = function () {
+ var invertedIndex = Object.keys(this.invertedIndex)
+ .sort()
+ .map(function (term) {
+ return [term, this.invertedIndex[term]]
+ }, this)
+
+ var fieldVectors = Object.keys(this.fieldVectors)
+ .map(function (ref) {
+ return [ref, this.fieldVectors[ref].toJSON()]
+ }, this)
+
+ return {
+ version: lunr.version,
+ fields: this.fields,
+ fieldVectors: fieldVectors,
+ invertedIndex: invertedIndex,
+ pipeline: this.pipeline.toJSON()
+ }
+}
+
+/**
+ * Loads a previously serialized lunr.Index
+ *
+ * @param {Object} serializedIndex - A previously serialized lunr.Index
+ * @returns {lunr.Index}
+ */
+lunr.Index.load = function (serializedIndex) {
+ var attrs = {},
+ fieldVectors = {},
+ serializedVectors = serializedIndex.fieldVectors,
+ invertedIndex = Object.create(null),
+ serializedInvertedIndex = serializedIndex.invertedIndex,
+ tokenSetBuilder = new lunr.TokenSet.Builder,
+ pipeline = lunr.Pipeline.load(serializedIndex.pipeline)
+
+ if (serializedIndex.version != lunr.version) {
+ lunr.utils.warn("Version mismatch when loading serialised index. Current version of lunr '" + lunr.version + "' does not match serialized index '" + serializedIndex.version + "'")
+ }
+
+ for (var i = 0; i < serializedVectors.length; i++) {
+ var tuple = serializedVectors[i],
+ ref = tuple[0],
+ elements = tuple[1]
+
+ fieldVectors[ref] = new lunr.Vector(elements)
+ }
+
+ for (var i = 0; i < serializedInvertedIndex.length; i++) {
+ var tuple = serializedInvertedIndex[i],
+ term = tuple[0],
+ posting = tuple[1]
+
+ tokenSetBuilder.insert(term)
+ invertedIndex[term] = posting
+ }
+
+ tokenSetBuilder.finish()
+
+ attrs.fields = serializedIndex.fields
+
+ attrs.fieldVectors = fieldVectors
+ attrs.invertedIndex = invertedIndex
+ attrs.tokenSet = tokenSetBuilder.root
+ attrs.pipeline = pipeline
+
+ return new lunr.Index(attrs)
+}
+/*!
+ * lunr.Builder
+ * Copyright (C) 2020 Oliver Nightingale
+ */
+
+/**
+ * lunr.Builder performs indexing on a set of documents and
+ * returns instances of lunr.Index ready for querying.
+ *
+ * All configuration of the index is done via the builder, the
+ * fields to index, the document reference, the text processing
+ * pipeline and document scoring parameters are all set on the
+ * builder before indexing.
+ *
+ * @constructor
+ * @property {string} _ref - Internal reference to the document reference field.
+ * @property {string[]} _fields - Internal reference to the document fields to index.
+ * @property {object} invertedIndex - The inverted index maps terms to document fields.
+ * @property {object} documentTermFrequencies - Keeps track of document term frequencies.
+ * @property {object} documentLengths - Keeps track of the length of documents added to the index.
+ * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing.
+ * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing.
+ * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index.
+ * @property {number} documentCount - Keeps track of the total number of documents indexed.
+ * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75.
+ * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2.
+ * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space.
+ * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index.
+ */
+lunr.Builder = function () {
+ this._ref = "id"
+ this._fields = Object.create(null)
+ this._documents = Object.create(null)
+ this.invertedIndex = Object.create(null)
+ this.fieldTermFrequencies = {}
+ this.fieldLengths = {}
+ this.tokenizer = lunr.tokenizer
+ this.pipeline = new lunr.Pipeline
+ this.searchPipeline = new lunr.Pipeline
+ this.documentCount = 0
+ this._b = 0.75
+ this._k1 = 1.2
+ this.termIndex = 0
+ this.metadataWhitelist = []
+}
+
+/**
+ * Sets the document field used as the document reference. Every document must have this field.
+ * The type of this field in the document should be a string, if it is not a string it will be
+ * coerced into a string by calling toString.
+ *
+ * The default ref is 'id'.
+ *
+ * The ref should _not_ be changed during indexing, it should be set before any documents are
+ * added to the index. Changing it during indexing can lead to inconsistent results.
+ *
+ * @param {string} ref - The name of the reference field in the document.
+ */
+lunr.Builder.prototype.ref = function (ref) {
+ this._ref = ref
+}
+
+/**
+ * A function that is used to extract a field from a document.
+ *
+ * Lunr expects a field to be at the top level of a document, if however the field
+ * is deeply nested within a document an extractor function can be used to extract
+ * the right field for indexing.
+ *
+ * @callback fieldExtractor
+ * @param {object} doc - The document being added to the index.
+ * @returns {?(string|object|object[])} obj - The object that will be indexed for this field.
+ * @example
Extracting a nested field
+ * function (doc) { return doc.nested.field }
+ */
+
+/**
+ * Adds a field to the list of document fields that will be indexed. Every document being
+ * indexed should have this field. Null values for this field in indexed documents will
+ * not cause errors but will limit the chance of that document being retrieved by searches.
+ *
+ * All fields should be added before adding documents to the index. Adding fields after
+ * a document has been indexed will have no effect on already indexed documents.
+ *
+ * Fields can be boosted at build time. This allows terms within that field to have more
+ * importance when ranking search results. Use a field boost to specify that matches within
+ * one field are more important than other fields.
+ *
+ * @param {string} fieldName - The name of a field to index in all documents.
+ * @param {object} attributes - Optional attributes associated with this field.
+ * @param {number} [attributes.boost=1] - Boost applied to all terms within this field.
+ * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document.
+ * @throws {RangeError} fieldName cannot contain unsupported characters '/'
+ */
+lunr.Builder.prototype.field = function (fieldName, attributes) {
+ if (/\//.test(fieldName)) {
+ throw new RangeError ("Field '" + fieldName + "' contains illegal character '/'")
+ }
+
+ this._fields[fieldName] = attributes || {}
+}
+
+/**
+ * A parameter to tune the amount of field length normalisation that is applied when
+ * calculating relevance scores. A value of 0 will completely disable any normalisation
+ * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b
+ * will be clamped to the range 0 - 1.
+ *
+ * @param {number} number - The value to set for this tuning parameter.
+ */
+lunr.Builder.prototype.b = function (number) {
+ if (number < 0) {
+ this._b = 0
+ } else if (number > 1) {
+ this._b = 1
+ } else {
+ this._b = number
+ }
+}
+
+/**
+ * A parameter that controls the speed at which a rise in term frequency results in term
+ * frequency saturation. The default value is 1.2. Setting this to a higher value will give
+ * slower saturation levels, a lower value will result in quicker saturation.
+ *
+ * @param {number} number - The value to set for this tuning parameter.
+ */
+lunr.Builder.prototype.k1 = function (number) {
+ this._k1 = number
+}
+
+/**
+ * Adds a document to the index.
+ *
+ * Before adding fields to the index the index should have been fully setup, with the document
+ * ref and all fields to index already having been specified.
+ *
+ * The document must have a field name as specified by the ref (by default this is 'id') and
+ * it should have all fields defined for indexing, though null or undefined values will not
+ * cause errors.
+ *
+ * Entire documents can be boosted at build time. Applying a boost to a document indicates that
+ * this document should rank higher in search results than other documents.
+ *
+ * @param {object} doc - The document to add to the index.
+ * @param {object} attributes - Optional attributes associated with this document.
+ * @param {number} [attributes.boost=1] - Boost applied to all terms within this document.
+ */
+lunr.Builder.prototype.add = function (doc, attributes) {
+ var docRef = doc[this._ref],
+ fields = Object.keys(this._fields)
+
+ this._documents[docRef] = attributes || {}
+ this.documentCount += 1
+
+ for (var i = 0; i < fields.length; i++) {
+ var fieldName = fields[i],
+ extractor = this._fields[fieldName].extractor,
+ field = extractor ? extractor(doc) : doc[fieldName],
+ tokens = this.tokenizer(field, {
+ fields: [fieldName]
+ }),
+ terms = this.pipeline.run(tokens),
+ fieldRef = new lunr.FieldRef (docRef, fieldName),
+ fieldTerms = Object.create(null)
+
+ this.fieldTermFrequencies[fieldRef] = fieldTerms
+ this.fieldLengths[fieldRef] = 0
+
+ // store the length of this field for this document
+ this.fieldLengths[fieldRef] += terms.length
+
+ // calculate term frequencies for this field
+ for (var j = 0; j < terms.length; j++) {
+ var term = terms[j]
+
+ if (fieldTerms[term] == undefined) {
+ fieldTerms[term] = 0
+ }
+
+ fieldTerms[term] += 1
+
+ // add to inverted index
+ // create an initial posting if one doesn't exist
+ if (this.invertedIndex[term] == undefined) {
+ var posting = Object.create(null)
+ posting["_index"] = this.termIndex
+ this.termIndex += 1
+
+ for (var k = 0; k < fields.length; k++) {
+ posting[fields[k]] = Object.create(null)
+ }
+
+ this.invertedIndex[term] = posting
+ }
+
+ // add an entry for this term/fieldName/docRef to the invertedIndex
+ if (this.invertedIndex[term][fieldName][docRef] == undefined) {
+ this.invertedIndex[term][fieldName][docRef] = Object.create(null)
+ }
+
+ // store all whitelisted metadata about this token in the
+ // inverted index
+ for (var l = 0; l < this.metadataWhitelist.length; l++) {
+ var metadataKey = this.metadataWhitelist[l],
+ metadata = term.metadata[metadataKey]
+
+ if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {
+ this.invertedIndex[term][fieldName][docRef][metadataKey] = []
+ }
+
+ this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata)
+ }
+ }
+
+ }
+}
+
+/**
+ * Calculates the average document length for this index
+ *
+ * @private
+ */
+lunr.Builder.prototype.calculateAverageFieldLengths = function () {
+
+ var fieldRefs = Object.keys(this.fieldLengths),
+ numberOfFields = fieldRefs.length,
+ accumulator = {},
+ documentsWithField = {}
+
+ for (var i = 0; i < numberOfFields; i++) {
+ var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),
+ field = fieldRef.fieldName
+
+ documentsWithField[field] || (documentsWithField[field] = 0)
+ documentsWithField[field] += 1
+
+ accumulator[field] || (accumulator[field] = 0)
+ accumulator[field] += this.fieldLengths[fieldRef]
+ }
+
+ var fields = Object.keys(this._fields)
+
+ for (var i = 0; i < fields.length; i++) {
+ var fieldName = fields[i]
+ accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName]
+ }
+
+ this.averageFieldLength = accumulator
+}
+
+/**
+ * Builds a vector space model of every document using lunr.Vector
+ *
+ * @private
+ */
+lunr.Builder.prototype.createFieldVectors = function () {
+ var fieldVectors = {},
+ fieldRefs = Object.keys(this.fieldTermFrequencies),
+ fieldRefsLength = fieldRefs.length,
+ termIdfCache = Object.create(null)
+
+ for (var i = 0; i < fieldRefsLength; i++) {
+ var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),
+ fieldName = fieldRef.fieldName,
+ fieldLength = this.fieldLengths[fieldRef],
+ fieldVector = new lunr.Vector,
+ termFrequencies = this.fieldTermFrequencies[fieldRef],
+ terms = Object.keys(termFrequencies),
+ termsLength = terms.length
+
+
+ var fieldBoost = this._fields[fieldName].boost || 1,
+ docBoost = this._documents[fieldRef.docRef].boost || 1
+
+ for (var j = 0; j < termsLength; j++) {
+ var term = terms[j],
+ tf = termFrequencies[term],
+ termIndex = this.invertedIndex[term]._index,
+ idf, score, scoreWithPrecision
+
+ if (termIdfCache[term] === undefined) {
+ idf = lunr.idf(this.invertedIndex[term], this.documentCount)
+ termIdfCache[term] = idf
+ } else {
+ idf = termIdfCache[term]
+ }
+
+ score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf)
+ score *= fieldBoost
+ score *= docBoost
+ scoreWithPrecision = Math.round(score * 1000) / 1000
+ // Converts 1.23456789 to 1.234.
+ // Reducing the precision so that the vectors take up less
+ // space when serialised. Doing it now so that they behave
+ // the same before and after serialisation. Also, this is
+ // the fastest approach to reducing a number's precision in
+ // JavaScript.
+
+ fieldVector.insert(termIndex, scoreWithPrecision)
+ }
+
+ fieldVectors[fieldRef] = fieldVector
+ }
+
+ this.fieldVectors = fieldVectors
+}
+
+/**
+ * Creates a token set of all tokens in the index using lunr.TokenSet
+ *
+ * @private
+ */
+lunr.Builder.prototype.createTokenSet = function () {
+ this.tokenSet = lunr.TokenSet.fromArray(
+ Object.keys(this.invertedIndex).sort()
+ )
+}
+
+/**
+ * Builds the index, creating an instance of lunr.Index.
+ *
+ * This completes the indexing process and should only be called
+ * once all documents have been added to the index.
+ *
+ * @returns {lunr.Index}
+ */
+lunr.Builder.prototype.build = function () {
+ this.calculateAverageFieldLengths()
+ this.createFieldVectors()
+ this.createTokenSet()
+
+ return new lunr.Index({
+ invertedIndex: this.invertedIndex,
+ fieldVectors: this.fieldVectors,
+ tokenSet: this.tokenSet,
+ fields: Object.keys(this._fields),
+ pipeline: this.searchPipeline
+ })
+}
+
+/**
+ * Applies a plugin to the index builder.
+ *
+ * A plugin is a function that is called with the index builder as its context.
+ * Plugins can be used to customise or extend the behaviour of the index
+ * in some way. A plugin is just a function, that encapsulated the custom
+ * behaviour that should be applied when building the index.
+ *
+ * The plugin function will be called with the index builder as its argument, additional
+ * arguments can also be passed when calling use. The function will be called
+ * with the index builder as its context.
+ *
+ * @param {Function} plugin The plugin to apply.
+ */
+lunr.Builder.prototype.use = function (fn) {
+ var args = Array.prototype.slice.call(arguments, 1)
+ args.unshift(this)
+ fn.apply(this, args)
+}
+/**
+ * Contains and collects metadata about a matching document.
+ * A single instance of lunr.MatchData is returned as part of every
+ * lunr.Index~Result.
+ *
+ * @constructor
+ * @param {string} term - The term this match data is associated with
+ * @param {string} field - The field in which the term was found
+ * @param {object} metadata - The metadata recorded about this term in this field
+ * @property {object} metadata - A cloned collection of metadata associated with this document.
+ * @see {@link lunr.Index~Result}
+ */
+lunr.MatchData = function (term, field, metadata) {
+ var clonedMetadata = Object.create(null),
+ metadataKeys = Object.keys(metadata || {})
+
+ // Cloning the metadata to prevent the original
+ // being mutated during match data combination.
+ // Metadata is kept in an array within the inverted
+ // index so cloning the data can be done with
+ // Array#slice
+ for (var i = 0; i < metadataKeys.length; i++) {
+ var key = metadataKeys[i]
+ clonedMetadata[key] = metadata[key].slice()
+ }
+
+ this.metadata = Object.create(null)
+
+ if (term !== undefined) {
+ this.metadata[term] = Object.create(null)
+ this.metadata[term][field] = clonedMetadata
+ }
+}
+
+/**
+ * An instance of lunr.MatchData will be created for every term that matches a
+ * document. However only one instance is required in a lunr.Index~Result. This
+ * method combines metadata from another instance of lunr.MatchData with this
+ * objects metadata.
+ *
+ * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one.
+ * @see {@link lunr.Index~Result}
+ */
+lunr.MatchData.prototype.combine = function (otherMatchData) {
+ var terms = Object.keys(otherMatchData.metadata)
+
+ for (var i = 0; i < terms.length; i++) {
+ var term = terms[i],
+ fields = Object.keys(otherMatchData.metadata[term])
+
+ if (this.metadata[term] == undefined) {
+ this.metadata[term] = Object.create(null)
+ }
+
+ for (var j = 0; j < fields.length; j++) {
+ var field = fields[j],
+ keys = Object.keys(otherMatchData.metadata[term][field])
+
+ if (this.metadata[term][field] == undefined) {
+ this.metadata[term][field] = Object.create(null)
+ }
+
+ for (var k = 0; k < keys.length; k++) {
+ var key = keys[k]
+
+ if (this.metadata[term][field][key] == undefined) {
+ this.metadata[term][field][key] = otherMatchData.metadata[term][field][key]
+ } else {
+ this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key])
+ }
+
+ }
+ }
+ }
+}
+
+/**
+ * Add metadata for a term/field pair to this instance of match data.
+ *
+ * @param {string} term - The term this match data is associated with
+ * @param {string} field - The field in which the term was found
+ * @param {object} metadata - The metadata recorded about this term in this field
+ */
+lunr.MatchData.prototype.add = function (term, field, metadata) {
+ if (!(term in this.metadata)) {
+ this.metadata[term] = Object.create(null)
+ this.metadata[term][field] = metadata
+ return
+ }
+
+ if (!(field in this.metadata[term])) {
+ this.metadata[term][field] = metadata
+ return
+ }
+
+ var metadataKeys = Object.keys(metadata)
+
+ for (var i = 0; i < metadataKeys.length; i++) {
+ var key = metadataKeys[i]
+
+ if (key in this.metadata[term][field]) {
+ this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key])
+ } else {
+ this.metadata[term][field][key] = metadata[key]
+ }
+ }
+}
+/**
+ * A lunr.Query provides a programmatic way of defining queries to be performed
+ * against a {@link lunr.Index}.
+ *
+ * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method
+ * so the query object is pre-initialized with the right index fields.
+ *
+ * @constructor
+ * @property {lunr.Query~Clause[]} clauses - An array of query clauses.
+ * @property {string[]} allFields - An array of all available fields in a lunr.Index.
+ */
+lunr.Query = function (allFields) {
+ this.clauses = []
+ this.allFields = allFields
+}
+
+/**
+ * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause.
+ *
+ * This allows wildcards to be added to the beginning and end of a term without having to manually do any string
+ * concatenation.
+ *
+ * The wildcard constants can be bitwise combined to select both leading and trailing wildcards.
+ *
+ * @constant
+ * @default
+ * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour
+ * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists
+ * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists
+ * @see lunr.Query~Clause
+ * @see lunr.Query#clause
+ * @see lunr.Query#term
+ * @example
+ * query.term('foo', {
+ * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING
+ * })
+ */
+
+lunr.Query.wildcard = new String ("*")
+lunr.Query.wildcard.NONE = 0
+lunr.Query.wildcard.LEADING = 1
+lunr.Query.wildcard.TRAILING = 2
+
+/**
+ * Constants for indicating what kind of presence a term must have in matching documents.
+ *
+ * @constant
+ * @enum {number}
+ * @see lunr.Query~Clause
+ * @see lunr.Query#clause
+ * @see lunr.Query#term
+ * @example
query term with required presence
+ * query.term('foo', { presence: lunr.Query.presence.REQUIRED })
+ */
+lunr.Query.presence = {
+ /**
+ * Term's presence in a document is optional, this is the default value.
+ */
+ OPTIONAL: 1,
+
+ /**
+ * Term's presence in a document is required, documents that do not contain
+ * this term will not be returned.
+ */
+ REQUIRED: 2,
+
+ /**
+ * Term's presence in a document is prohibited, documents that do contain
+ * this term will not be returned.
+ */
+ PROHIBITED: 3
+}
+
+/**
+ * A single clause in a {@link lunr.Query} contains a term and details on how to
+ * match that term against a {@link lunr.Index}.
+ *
+ * @typedef {Object} lunr.Query~Clause
+ * @property {string[]} fields - The fields in an index this clause should be matched against.
+ * @property {number} [boost=1] - Any boost that should be applied when matching this clause.
+ * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be.
+ * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline.
+ * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended.
+ * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents.
+ */
+
+/**
+ * Adds a {@link lunr.Query~Clause} to this query.
+ *
+ * Unless the clause contains the fields to be matched all fields will be matched. In addition
+ * a default boost of 1 is applied to the clause.
+ *
+ * @param {lunr.Query~Clause} clause - The clause to add to this query.
+ * @see lunr.Query~Clause
+ * @returns {lunr.Query}
+ */
+lunr.Query.prototype.clause = function (clause) {
+ if (!('fields' in clause)) {
+ clause.fields = this.allFields
+ }
+
+ if (!('boost' in clause)) {
+ clause.boost = 1
+ }
+
+ if (!('usePipeline' in clause)) {
+ clause.usePipeline = true
+ }
+
+ if (!('wildcard' in clause)) {
+ clause.wildcard = lunr.Query.wildcard.NONE
+ }
+
+ if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) {
+ clause.term = "*" + clause.term
+ }
+
+ if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) {
+ clause.term = "" + clause.term + "*"
+ }
+
+ if (!('presence' in clause)) {
+ clause.presence = lunr.Query.presence.OPTIONAL
+ }
+
+ this.clauses.push(clause)
+
+ return this
+}
+
+/**
+ * A negated query is one in which every clause has a presence of
+ * prohibited. These queries require some special processing to return
+ * the expected results.
+ *
+ * @returns boolean
+ */
+lunr.Query.prototype.isNegated = function () {
+ for (var i = 0; i < this.clauses.length; i++) {
+ if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) {
+ return false
+ }
+ }
+
+ return true
+}
+
+/**
+ * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause}
+ * to the list of clauses that make up this query.
+ *
+ * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion
+ * to a token or token-like string should be done before calling this method.
+ *
+ * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an
+ * array, each term in the array will share the same options.
+ *
+ * @param {object|object[]} term - The term(s) to add to the query.
+ * @param {object} [options] - Any additional properties to add to the query clause.
+ * @returns {lunr.Query}
+ * @see lunr.Query#clause
+ * @see lunr.Query~Clause
+ * @example
adding a single term to a query
+ * query.term("foo")
+ * @example
adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard
")),e.inlineElement=r):(h.updateStatus("ready"),h._parseMarkup(t,{},e),t)}}}),"ajax");u.magnificPopup.registerModule(j,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'The content could not be loaded.'},proto:{initAjax:function(){h.types.push(j),b=h.st.ajax.cursor,c(x+"."+j,t),c("BeforeChange."+j,t)},getAjax:function(r){b&&u(document.body).addClass(b),h.updateStatus("loading");var e=u.extend({url:r.src,success:function(e,t,n){e={data:e,xhr:n};f("ParseAjax",e),h.appendContent(u(e.data),j),r.finished=!0,o(),h._setFocus(),setTimeout(function(){h.wrap.addClass(E)},16),h.updateStatus("ready"),f("AjaxContentAdded")},error:function(){o(),r.finished=r.loadError=!0,h.updateStatus("error",h.st.ajax.tError.replace("%url%",r.src))}},h.st.ajax.settings);return h.req=u.ajax(e),""}}});var I;u.magnificPopup.registerModule("image",{options:{markup:'
',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'The image could not be loaded.'},proto:{initImage:function(){var e=h.st.image,t=".image";h.types.push("image"),c(C+t,function(){"image"===h.currItem.type&&e.cursor&&u(document.body).addClass(e.cursor)}),c(x+t,function(){e.cursor&&u(document.body).removeClass(e.cursor),A.off("resize"+T)}),c("Resize"+t,h.resizeImage),h.isLowIE&&c("AfterChange",h.resizeImage)},resizeImage:function(){var e,t=h.currItem;t&&t.img&&h.st.image.verticalFit&&(e=0,h.isLowIE&&(e=parseInt(t.img.css("padding-top"),10)+parseInt(t.img.css("padding-bottom"),10)),t.img.css("max-height",h.wH-e))},_onImageHasSize:function(e){e.img&&(e.hasSize=!0,I&&clearInterval(I),e.isCheckingImgSize=!1,f("ImageHasSize",e),e.imgHidden)&&(h.content&&h.content.removeClass("mfp-loading"),e.imgHidden=!1)},findImageSize:function(t){function n(e){I&&clearInterval(I),I=setInterval(function(){0
',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){h.types.push(q),c("BeforeChange",function(e,t,n){t!==n&&(t===q?L():n===q&&L(!0))}),c(x+"."+q,function(){L()})},getIframe:function(e,t){var n=e.src,r=h.st.iframe,o=(u.each(r.patterns,function(){if(-1',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var i=h.st.gallery,e=".mfp-gallery";if(h.direction=!0,!i||!i.enabled)return!1;g+=" mfp-gallery",c(C+e,function(){i.navigateByImgClick&&h.wrap.on("click"+e,".mfp-img",function(){if(1=h.index,h.index=e,h.updateItemHTML()},preloadNearbyImages:function(){for(var e=h.st.gallery.preload,t=Math.min(e[0],h.items.length),n=Math.min(e[1],h.items.length),r=1;r<=(h.direction?n:t);r++)h._preloadItem(h.index+r);for(r=1;r<=(h.direction?t:n);r++)h._preloadItem(h.index-r)},_preloadItem:function(e){var t;e=D(e),h.items[e].preloaded||((t=h.items[e]).parsed||(t=h.parseEl(e)),f("LazyLoad",t),"image"===t.type&&(t.img=u('').on("load.mfploader",function(){t.hasSize=!0}).on("error.mfploader",function(){t.hasSize=!0,t.loadError=!0,f("LazyLoadError",t)}).attr("src",t.src)),t.preloaded=!0)}}}),"retina");u.magnificPopup.registerModule(H,{options:{replaceSrc:function(e){return e.src.replace(/\.\w+$/,function(e){return"@2x"+e})},ratio:1},proto:{initRetina:function(){var n,r;1t.durationMax?t.durationMax:t.durationMin&&e=l)return x.cancelScroll(!0),e=t,n=g,0===(t=r)&&document.body.focus(),n||(t.focus(),document.activeElement!==t&&(t.setAttribute("tabindex","-1"),t.focus(),t.style.outline="none"),w.scrollTo(0,e)),T("scrollStop",m,r,o),!(b=d=null)},h=function(e){var t,n,r;u+=e-(d=d||e),f=i+s*(n=1<(f=0===c?0:u/c)?1:f,"easeInQuad"===(t=m).easing&&(r=n*n),"easeOutQuad"===t.easing&&(r=n*(2-n)),"easeInOutQuad"===t.easing&&(r=n<.5?2*n*n:(4-2*n)*n-1),"easeInCubic"===t.easing&&(r=n*n*n),"easeOutCubic"===t.easing&&(r=--n*n*n+1),"easeInOutCubic"===t.easing&&(r=n<.5?4*n*n*n:(n-1)*(2*n-2)*(2*n-2)+1),"easeInQuart"===t.easing&&(r=n*n*n*n),"easeOutQuart"===t.easing&&(r=1- --n*n*n*n),"easeInOutQuart"===t.easing&&(r=n<.5?8*n*n*n*n:1-8*--n*n*n*n),"easeInQuint"===t.easing&&(r=n*n*n*n*n),"easeOutQuint"===t.easing&&(r=1+--n*n*n*n*n),"easeInOutQuint"===t.easing&&(r=n<.5?16*n*n*n*n*n:1+16*--n*n*n*n*n),(r=t.customEasing?t.customEasing(n):r)||n),w.scrollTo(0,Math.floor(f)),p(f,a)||(b=w.requestAnimationFrame(h),d=e)},0===w.pageYOffset&&w.scrollTo(0,0),e=r,t=m,g||history.pushState&&t.updateURL&&history.pushState({smoothScroll:JSON.stringify(t),anchor:e.id},document.title,e===document.documentElement?"#top":"#"+e.id),"matchMedia"in w&&w.matchMedia("(prefers-reduced-motion)").matches?w.scrollTo(0,Math.floor(a)):(T("scrollStart",m,r,o),x.cancelScroll(!0),w.requestAnimationFrame(h)))},x.destroy=function(){v&&(document.removeEventListener("click",t,!1),w.removeEventListener("popstate",n,!1),x.cancelScroll(),b=y=o=v=null)};if("querySelector"in document&&"addEventListener"in w&&"requestAnimationFrame"in w&&"closest"in w.Element.prototype)return x.destroy(),v=C(E,e||{}),y=v.header?document.querySelector(v.header):null,document.addEventListener("click",t,!1),v.updateURL&&v.popstate&&w.addEventListener("popstate",n,!1),x;throw"Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs."}}),$(document).ready(function(){$("#main").fitVids(),$(".author__urls-wrapper button").on("click",function(){$(".author__urls").toggleClass("is--visible"),$(".author__urls-wrapper").find("button").toggleClass("open")}),$(document).keyup(function(e){27===e.keyCode&&$(".initial-content").hasClass("is--hidden")&&($(".search-content").toggleClass("is--visible"),$(".initial-content").toggleClass("is--hidden"))}),$(".search__toggle").on("click",function(){$(".search-content").toggleClass("is--visible"),$(".initial-content").toggleClass("is--hidden"),setTimeout(function(){$(".search-content input").focus()},400)});function o(e){for(var t=e.target,n=t.nextElementSibling;n&&"code"!==n.tagName.toLowerCase();)n=n.nextElementSibling;if(n)return e=function(e){if(document.queryCommandEnabled("copy")&&navigator.clipboard)return navigator.clipboard.writeText(e).then(()=>!0,()=>console.error("Failed to copy text to clipboard: "+e)),!0;var t="rtl"===document.documentElement.getAttribute("dir"),n=document.createElement("textarea"),t=(n.className="clipboard-helper",n.style[t?"right":"left"]="-9999px",window.pageYOffset||document.documentElement.scrollTop),t=(n.style.top=t+"px",n.setAttribute("readonly",""),n.value=e,document.body.appendChild(n),!0);try{n.select(),t=document.execCommand("copy")}catch(e){t=!1}return n.parentNode.removeChild(n),t}((n=(e=n.querySelector("td.code, td.rouge-code"))?e:n).innerText),t.focus(),e&&(null!==t.interval&&clearInterval(t.interval),t.classList.add("copied"),t.interval=setTimeout(function(){t.classList.remove("copied"),clearInterval(t.interval),t.interval=null},1500)),e;throw console.warn(t),new Error("No code block found for this button.")}var e;new SmoothScroll('a[href*="#"]',{offset:20,speed:400,speedAsDuration:!0,durationMax:500}),0<$("nav.toc").length&&new Gumshoe("nav.toc a",{navClass:"active",contentClass:"active",nested:!1,nestedClass:"active",offset:20,reflow:!0,events:!0}),window.chrome&&document.addEventListener("gumshoeActivate",function(e){var e=e.target,t={behavior:"auto",block:"nearest",inline:"start"},n=document.querySelector("aside.sidebar__right.sticky");n&&"sticky"===window.getComputedStyle(n).position&&(e.parentElement.classList.contains("toc__menu")&&e==e.parentElement.firstElementChild?document.querySelector("nav.toc header"):e).scrollIntoView(t)}),$("a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif'],a[href$='.webp']").has("> img").addClass("image-popup"),$(".image-popup").magnificPopup({type:"image",tLoading:"Loading image #%curr%...",gallery:{enabled:!0,navigateByImgClick:!0,preload:[0,1]},image:{tError:'Image #%curr% could not be loaded.'},removalDelay:500,mainClass:"mfp-zoom-in",callbacks:{beforeOpen:function(){this.st.image.markup=this.st.image.markup.replace("mfp-figure","mfp-figure mfp-with-anim")}},closeOnContentClick:!0,midClick:!0}),(e=document.querySelector(".page__content"))&&e.querySelectorAll("h1, h2, h3, h4, h5, h6").forEach(function(e){var t,n=e.getAttribute("id");n&&((t=document.createElement("a")).className="header-link",t.href="#"+n,t.innerHTML='Permalink',t.title="Permalink",e.appendChild(t))});window.enable_copy_code_button&&document.querySelectorAll(".page__content pre.highlight > code").forEach(function(e,t,n){var r,e=e.parentElement;"code"===e.firstElementChild.tagName.toLowerCase()&&((r=document.createElement("button")).title="Copy to clipboard",r.className="clipboard-copy-button",r.innerHTML='Copy code',r.addEventListener("click",o),e.prepend(r))})});
\ No newline at end of file
diff --git a/assets/js/main.min.js.map b/assets/js/main.min.js.map
new file mode 100644
index 0000000..19426d8
--- /dev/null
+++ b/assets/js/main.min.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["assets/js/vendor/jquery/jquery-3.6.0.js","assets/js/plugins/gumshoe.js","assets/js/plugins/jquery.ba-throttle-debounce.js","assets/js/plugins/jquery.fitvids.js","assets/js/plugins/jquery.greedy-navigation.js","assets/js/plugins/jquery.magnific-popup.js","assets/js/plugins/smooth-scroll.js","assets/js/_main.js"],"names":["global","factory","module","exports","document","w","Error","window","this","noGlobal","isFunction","obj","nodeType","item","isWindow","arr","getProto","Object","getPrototypeOf","slice","flat","array","call","concat","apply","push","indexOf","class2type","toString","hasOwn","hasOwnProperty","fnToString","ObjectFunctionString","support","preservedScriptAttributes","type","src","nonce","noModule","DOMEval","code","node","doc","i","val","script","createElement","text","getAttribute","setAttribute","head","appendChild","parentNode","removeChild","toType","version","jQuery","selector","context","fn","init","isArrayLike","length","prototype","jquery","constructor","toArray","get","num","pushStack","elems","ret","merge","prevObject","each","callback","map","elem","arguments","first","eq","last","even","grep","_elem","odd","len","j","end","sort","splice","extend","options","name","copy","copyIsArray","clone","target","deep","isPlainObject","Array","isArray","undefined","expando","Math","random","replace","isReady","error","msg","noop","proto","Ctor","isEmptyObject","globalEval","makeArray","results","inArray","second","invert","matches","callbackExpect","arg","value","guid","Symbol","iterator","split","_i","toLowerCase","dir","until","matched","truncate","is","siblings","n","nextSibling","Sizzle","funescape","escape","nonHex","high","String","fromCharCode","fcssescape","ch","asCodePoint","charCodeAt","unloadHandler","setDocument","Expr","getText","isXML","tokenize","compile","select","outermostContext","sortInput","hasDuplicate","docElem","documentIsHTML","rbuggyQSA","rbuggyMatches","contains","Date","preferredDoc","dirruns","done","classCache","createCache","tokenCache","compilerCache","nonnativeSelectorCache","sortOrder","a","b","pop","pushNative","list","booleans","whitespace","identifier","attributes","pseudos","rwhitespace","RegExp","rtrim","rcomma","rcombinators","rdescend","rpseudo","ridentifier","matchExpr","ID","CLASS","TAG","ATTR","PSEUDO","CHILD","bool","needsContext","rhtml","rinputs","rheader","rnative","rquickExpr","rsibling","runescape","rcssescape","inDisabledFieldset","addCombinator","disabled","nodeName","next","childNodes","e","els","seed","m","nid","match","groups","newSelector","newContext","ownerDocument","exec","getElementById","id","getElementsByTagName","getElementsByClassName","qsa","test","testContext","scope","toSelector","join","querySelectorAll","qsaError","removeAttribute","keys","cache","key","cacheLength","shift","markFunction","assert","el","addHandle","attrs","handler","attrHandle","siblingCheck","cur","diff","sourceIndex","createDisabledPseudo","isDisabled","createPositionalPseudo","argument","matchIndexes","namespace","namespaceURI","documentElement","subWindow","defaultView","top","addEventListener","attachEvent","className","createComment","getById","getElementsByName","filter","attrId","find","getAttributeNode","tag","tmp","input","innerHTML","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","msMatchesSelector","disconnectedMatch","hasCompare","compareDocumentPosition","adown","bup","compare","sortDetached","aup","ap","bp","unshift","expr","elements","attr","specified","sel","uniqueSort","duplicates","detectDuplicates","sortStable","textContent","firstChild","nodeValue","selectors","createPseudo","relative",">"," ","+","~","preFilter","excess","unquoted","nodeNameSelector","pattern","operator","check","result","what","_argument","simple","forward","ofType","_context","xml","uniqueCache","outerCache","nodeIndex","start","parent","useCache","lastChild","uniqueID","pseudo","args","setFilters","idx","not","matcher","unmatched","has","lang","elemLang","hash","location","root","focus","activeElement","hasFocus","href","tabIndex","enabled","checked","selected","selectedIndex","empty","header","button","_matchIndexes","lt","gt","radio","checkbox","file","password","image","submit","reset","tokens","combinator","base","skip","checkNonElements","doneName","oldCache","newCache","elementMatcher","matchers","condense","newUnmatched","mapped","setMatcher","postFilter","postFinder","postSelector","temp","preMap","postMap","preexisting","contexts","matcherIn","matcherOut","matcherFromGroupMatchers","elementMatchers","setMatchers","superMatcher","outermost","matchedCount","setMatched","contextBackup","byElement","dirrunsUnique","bySet","filters","parseOnly","soFar","preFilters","cached","matcherFromTokens","checkContext","leadingRelative","implicitRelative","matchContext","matchAnyContext","token","compiled","_name","defaultValue","rneedsContext","unique","isXMLDoc","escapeSelector","rsingleTag","winnow","qualifier","self","rootjQuery","rparentsprev","ready","parseHTML","guaranteedUnique","children","contents","prev","sibling","targets","l","closest","index","prevAll","add","addBack","parents","parentsUntil","nextAll","nextUntil","prevUntil","contentDocument","content","reverse","rnothtmlwhite","Identity","v","Thrower","ex","adoptValue","resolve","reject","noValue","method","promise","fail","then","Callbacks","object","_","flag","fire","locked","once","fired","firing","queue","firingIndex","memory","stopOnFalse","remove","disable","lock","fireWith","Deferred","func","tuples","state","always","deferred","catch","pipe","fns","newDefer","tuple","returned","progress","notify","onFulfilled","onRejected","onProgress","maxDepth","depth","special","mightThrow","that","TypeError","notifyWith","resolveWith","process","exceptionHook","stackTrace","rejectWith","getStackHook","setTimeout","stateString","when","singleValue","updateFunc","resolveContexts","resolveValues","remaining","primary","rerrorNames","readyList","stack","console","warn","message","readyException","completed","removeEventListener","readyWait","wait","readyState","doScroll","access","chainable","emptyGet","raw","bulk","_key","rmsPrefix","rdashAlpha","fcamelCase","_all","letter","toUpperCase","camelCase","string","acceptData","owner","Data","uid","defineProperty","configurable","set","data","prop","hasData","dataPriv","dataUser","rbrace","rmultiDash","dataAttr","JSON","parse","removeData","_data","_removeData","dequeue","startLength","hooks","_queueHooks","stop","setter","clearQueue","count","defer","isHiddenWithinTree","style","display","isAttached","css","pnum","source","rcssNum","cssExpand","composed","getRootNode","adjustCSS","valueParts","tween","adjusted","scale","maxIterations","currentValue","initial","unit","cssNumber","initialInUnit","defaultDisplayMap","showHide","show","values","body","hide","toggle","rcheckableType","rtagName","rscriptType","wrapMap","div","createDocumentFragment","checkClone","cloneNode","noCloneChecked","option","thead","col","tr","td","_default","getAll","setGlobalEval","refElements","tbody","tfoot","colgroup","caption","th","optgroup","buildFragment","scripts","selection","ignored","wrap","attached","fragment","nodes","htmlPrefilter","createTextNode","rtypenamespace","returnTrue","returnFalse","expectSync","err","on","types","one","origFn","event","off","leverageNative","notAsync","saved","isTrigger","delegateType","stopPropagation","stopImmediatePropagation","preventDefault","trigger","Event","handleObjIn","eventHandle","events","t","handlers","namespaces","origType","elemData","create","handle","triggered","dispatch","bindType","handleObj","delegateCount","setup","mappedTypes","origCount","teardown","removeEvent","nativeEvent","handlerQueue","fix","delegateTarget","preDispatch","isPropagationStopped","currentTarget","isImmediatePropagationStopped","rnamespace","postDispatch","matchedHandlers","matchedSelectors","addProp","hook","enumerable","originalEvent","writable","load","noBubble","click","beforeunload","returnValue","props","isDefaultPrevented","defaultPrevented","relatedTarget","timeStamp","now","isSimulated","altKey","bubbles","cancelable","changedTouches","ctrlKey","detail","eventPhase","metaKey","pageX","pageY","shiftKey","view","char","charCode","keyCode","buttons","clientX","clientY","offsetX","offsetY","pointerId","pointerType","screenX","screenY","targetTouches","toElement","touches","which","blur","mouseenter","mouseleave","pointerenter","pointerleave","orig","related","rnoInnerhtml","rchecked","rcleanScript","manipulationTarget","disableScript","restoreScript","cloneCopyEvent","dest","udataOld","udataCur","domManip","collection","hasScripts","iNoClone","valueIsFunction","html","_evalUrl","keepData","cleanData","dataAndEvents","deepDataAndEvents","srcElements","destElements","inPage","detach","append","prepend","insertBefore","before","after","replaceWith","replaceChild","appendTo","prependTo","insertAfter","replaceAll","original","insert","getStyles","opener","getComputedStyle","swap","old","pixelPositionVal","boxSizingReliableVal","scrollboxSizeVal","pixelBoxStylesVal","reliableTrDimensionsVal","reliableMarginLeftVal","container","rnumnonpx","rboxStyle","computeStyleTests","divStyle","cssText","roundPixelMeasures","marginLeft","right","width","position","offsetWidth","measure","round","parseFloat","curCSS","computed","maxWidth","getPropertyValue","pixelBoxStyles","minWidth","addGetHookIf","conditionFn","hookFn","backgroundClip","clearCloneStyle","boxSizingReliable","pixelPosition","reliableMarginLeft","scrollboxSize","reliableTrDimensions","table","trStyle","trChild","height","parseInt","borderTopWidth","borderBottomWidth","offsetHeight","cssPrefixes","emptyStyle","vendorProps","finalPropName","final","cssProps","capName","rdisplayswap","rcustomProp","cssShow","visibility","cssNormalTransform","letterSpacing","fontWeight","setPositiveNumber","subtract","max","boxModelAdjustment","dimension","box","isBorderBox","styles","computedVal","extra","delta","ceil","getWidthOrHeight","valueIsBorderBox","offsetProp","getClientRects","Tween","easing","cssHooks","opacity","animationIterationCount","columnCount","fillOpacity","flexGrow","flexShrink","gridArea","gridColumn","gridColumnEnd","gridColumnStart","gridRow","gridRowEnd","gridRowStart","lineHeight","order","orphans","widows","zIndex","zoom","origName","isCustomProp","setProperty","isFinite","getBoundingClientRect","scrollboxSizeBuggy","left","margin","padding","border","prefix","suffix","expand","expanded","parts","propHooks","run","percent","eased","duration","pos","step","fx","scrollTop","scrollLeft","linear","p","swing","cos","PI","fxNow","inProgress","opt","rfxtypes","rrun","schedule","hidden","requestAnimationFrame","interval","tick","createFxNow","genFx","includeWidth","createTween","animation","Animation","tweeners","properties","stopped","prefilters","currentTime","startTime","tweens","opts","specialEasing","originalProperties","originalOptions","gotoEnd","bind","complete","timer","anim","*","tweener","oldfire","propTween","restoreDisplay","isBox","dataShow","unqueued","overflow","overflowX","overflowY","prefilter","speed","speeds","fadeTo","to","animate","doAnimation","optall","finish","stopQueue","timers","cssFn","slideDown","slideUp","slideToggle","fadeIn","fadeOut","fadeToggle","slow","fast","delay","time","timeout","clearTimeout","checkOn","optSelected","radioValue","boolHook","rfocusable","removeAttr","nType","attrHooks","attrNames","getter","lowercaseName","rclickable","stripAndCollapse","getClass","classesToArray","removeProp","propFix","tabindex","for","class","addClass","classes","clazz","finalValue","curValue","removeClass","toggleClass","stateVal","isValidValue","classNames","hasClass","stopPropagationCallback","rreturn","rfocusMorph","valHooks","optionSet","focusin","onlyHandlers","bubbleType","ontype","lastElement","eventPath","parentWindow","simulate","triggerHandler","attaches","rquery","rbracket","parseXML","parserErrorElem","DOMParser","parseFromString","rCRLF","rsubmitterTypes","rsubmittable","param","traditional","valueOrFunction","s","encodeURIComponent","buildParams","serialize","serializeArray","r20","rhash","rantiCache","rheaders","rnoContent","rprotocol","transports","allTypes","originAnchor","addToPrefiltersOrTransports","structure","dataTypeExpression","dataType","dataTypes","inspectPrefiltersOrTransports","jqXHR","inspected","seekingTransport","inspect","prefilterOrFactory","dataTypeOrTransport","ajaxExtend","flatOptions","ajaxSettings","active","lastModified","etag","url","isLocal","protocol","processData","async","contentType","accepts","json","responseFields","converters","* text","text html","text json","text xml","ajaxSetup","settings","ajaxPrefilter","ajaxTransport","ajax","transport","cacheURL","responseHeadersString","responseHeaders","timeoutTimer","fireGlobals","callbackContext","globalEventContext","completeDeferred","statusCode","requestHeaders","requestHeadersNames","strAbort","getResponseHeader","getAllResponseHeaders","setRequestHeader","overrideMimeType","mimeType","status","abort","statusText","finalText","crossDomain","urlAnchor","host","hasContent","uncached","ifModified","headers","beforeSend","success","send","nativeStatusText","responses","response","isSuccess","ct","finalDataType","firstDataType","conv2","current","conv","dataFilter","throws","modified","getJSON","getScript","text script","wrapAll","firstElementChild","wrapInner","htmlIsFunction","unwrap","visible","xhr","XMLHttpRequest","xhrSuccessStatus","0","1223","xhrSupported","oldCallbacks","cors","errorCallback","open","username","xhrFields","onload","onerror","onabort","ontimeout","onreadystatechange","responseType","responseText","binary","scriptAttrs","charset","scriptCharset","evt","rjsonp","jsonp","jsonpCallback","originalSettings","callbackName","overwritten","responseContainer","jsonProp","createHTMLDocument","implementation","keepScripts","parsed","params","animated","offset","setOffset","curCSSTop","curTop","curOffset","curCSSLeft","curElem","curLeft","curPosition","using","rect","win","pageYOffset","pageXOffset","offsetParent","parentOffset","scrollTo","Height","Width","","defaultExtra","funcName","unbind","delegate","undelegate","hover","fnOver","fnOut","_jQuery","proxy","holdReady","hold","parseJSON","isNumeric","isNaN","trim","define","amd","_$","$","noConflict","Gumshoe","sortContents","item1","item2","getOffsetTop","isAtBottom","innerHeight","scrollHeight","clientHeight","deactivate","items","li","nav","classList","navClass","contentClass","deactivateNested","emitEvent","link","defaults","nested","nestedClass","reflow","CustomEvent","dispatchEvent","offsetTop","isInView","bottom","bounds","useLastItem","activateNested","scrollHandler","cancelAnimationFrame","publicAPIs","detect","resizeHandler","navItems","forEach","decodeURIComponent","substr","destroy","merged","jq_throttle","Cowboy","throttle","no_trailing","debounce_mode","timeout_id","last_exec","wrapper","elapsed","debounce","at_begin","fitVids","customSelector","ignore","ignoreList","$allVideos","aspectRatio","$this","tagName","Zepto","numOfItems","totalSpace","closingTime","breakWidths","$btn","$vlinks","$hlinks","$nav","$logo","$logoImg","$title","$search","measureLinks","addWidth","outerWidth","availableSpace","numOfVisibleItems","requiredSpace","winWidth","lastBreakpoint","curBreakpoint","innerWidth","resize","naturalWidth","require","MagnificPopup","_mfpOn","f","mfp","ev","EVENT_NS","_getEl","_mfpTrigger","st","callbacks","charAt","_getCloseBtn","_currPopupType","currTemplate","closeBtn","closeMarkup","tClose","_checkInstance","magnificPopup","instance","_putInlineElementsBack","_lastInlineElement","_inlinePlaceholder","_hiddenClass","_removeAjaxCursor","_ajaxCur","_destroyAjaxRequest","req","_prevStatus","_document","_prevContentType","_wrapClasses","CLOSE_EVENT","BEFORE_CLOSE_EVENT","MARKUP_PARSE_EVENT","OPEN_EVENT","READY_CLASS","REMOVING_CLASS","PREVENT_CLOSE_CLASS","_isJQ","_window","INLINE_NS","appVersion","navigator","isLowIE","isIE8","all","isAndroid","isIOS","supportsTransition","probablyMobile","userAgent","popupsCache","isObj","isOpen","mainEl","fixedContentPos","modal","closeOnContentClick","closeOnBgClick","showCloseBtn","enableEscapeKey","bgOverlay","close","_checkIfClose","contentContainer","preloader","tLoading","modules","closeBtnInside","template","close_replaceWith","alignTop","fixedBgPos","updateSize","windowHeight","wH","windowStyles","classesToadd","_hasScrollBar","_getScrollbarSize","marginRight","isIE7","mainClass","_addClassToMFP","updateItemHTML","_lastFocusedEl","_setFocus","_onFocusIn","removalDelay","_close","classesToRemove","_removeClassFromMFP","currItem","autoFocusLast","prevHeight","winHeight","zoomLevel","clientWidth","parseEl","newContent","markup","appendContent","preloaded","addGroup","eHandler","mfpEl","_openClick","eName","midClick","disableOn","updateStatus","closeOnContent","closeOnBg","cName","_parseMarkup","scrollDiv","scrollbarSize","registerModule","itemOpts","jqEl","AJAX_NS","hiddenClass","tNotFound","initInline","getInline","inlineSt","inline","inlineElement","cursor","tError","initAjax","getAjax","textStatus","finished","loadError","_imgInterval","titleSrc","verticalFit","initImage","imgSt","ns","resizeImage","decr","img","_onImageHasSize","hasSize","clearInterval","isCheckingImgSize","imgHidden","findImageSize","mfpSetInterval","setInterval","counter","getImage","onLoadComplete","loaded","guard","onLoadError","alt","title","img_replaceWith","loading","_fixIframeBugs","isShowing","IFRAME_NS","_getLoopedId","numSlides","_replaceCurrTotal","curr","total","element","initZoom","getElToAnimate","showMainContent","openTimeout","animatedImg","zoomSt","newImg","transition","cssObj","-webkit-backface-visibility","_allowZoom","_getItemToZoom","_getOffset","isLarge","paddingTop","paddingBottom","hasMozTransform","MozTransform","RETINA_NS","srcAction","patterns","youtube","vimeo","gmaps","initIframe","prevType","newType","getIframe","embedSrc","iframeSt","iframe","dataObj","lastIndexOf","arrowMarkup","preload","navigateByImgClick","arrows","tPrev","tNext","tCounter","initGallery","gSt","gallery","direction","arrowLeft","arrowRight","_preloadTimeout","preloadNearbyImages","goTo","newIndex","preloadBefore","min","preloadAfter","_preloadItem","replaceSrc","ratio","initRetina","devicePixelRatio","retina","max-width","SmoothScroll","escapeCharacters","codeUnit","firstCodeUnit","InvalidCharacterError","anchor","emitEvents","topOnEmptyHash","speedAsDuration","durationMax","durationMin","clip","customEasing","updateURL","popstate","getHeight","getDocumentHeight","clickHandler","hostname","pathname","querySelector","history","replaceState","smoothScroll","stringify","animateScroll","popstateHandler","fixedHeader","animationInterval","cancelScroll","noEvent","startLocation","endLocation","distance","documentHeight","timeLapsed","stopAnimateScroll","loopAnimateScroll","_settings","isNum","anchorElem","headerHeight","abs","currentLocation","outline","timestamp","percentage","floor","pushState","matchMedia","Element","keyup","copyButtonEventListener","thisButton","codeBlock","nextElementSibling","queryCommandEnabled","clipboard","writeText","isRTL","textarea","yPosition","execCommand","realCodeBlock","innerText","pageContentElement","chrome","scrollOptions","behavior","block","tocElement","parentElement","scrollIntoView","beforeOpen","enable_copy_code_button","parentList","copyButton"],"mappings":"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"}
\ No newline at end of file
diff --git a/assets/js/plugins/gumshoe.js b/assets/js/plugins/gumshoe.js
new file mode 100644
index 0000000..713b6eb
--- /dev/null
+++ b/assets/js/plugins/gumshoe.js
@@ -0,0 +1,484 @@
+/*!
+ * gumshoejs v5.1.1
+ * A simple, framework-agnostic scrollspy script.
+ * (c) 2019 Chris Ferdinandi
+ * MIT License
+ * http://github.com/cferdinandi/gumshoe
+ */
+
+(function (root, factory) {
+ if ( typeof define === 'function' && define.amd ) {
+ define([], (function () {
+ return factory(root);
+ }));
+ } else if ( typeof exports === 'object' ) {
+ module.exports = factory(root);
+ } else {
+ root.Gumshoe = factory(root);
+ }
+})(typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : this, (function (window) {
+
+ 'use strict';
+
+ //
+ // Defaults
+ //
+
+ var defaults = {
+
+ // Active classes
+ navClass: 'active',
+ contentClass: 'active',
+
+ // Nested navigation
+ nested: false,
+ nestedClass: 'active',
+
+ // Offset & reflow
+ offset: 0,
+ reflow: false,
+
+ // Event support
+ events: true
+
+ };
+
+
+ //
+ // Methods
+ //
+
+ /**
+ * Merge two or more objects together.
+ * @param {Object} objects The objects to merge together
+ * @returns {Object} Merged values of defaults and options
+ */
+ var extend = function () {
+ var merged = {};
+ Array.prototype.forEach.call(arguments, (function (obj) {
+ for (var key in obj) {
+ if (!obj.hasOwnProperty(key)) return;
+ merged[key] = obj[key];
+ }
+ }));
+ return merged;
+ };
+
+ /**
+ * Emit a custom event
+ * @param {String} type The event type
+ * @param {Node} elem The element to attach the event to
+ * @param {Object} detail Any details to pass along with the event
+ */
+ var emitEvent = function (type, elem, detail) {
+
+ // Make sure events are enabled
+ if (!detail.settings.events) return;
+
+ // Create a new event
+ var event = new CustomEvent(type, {
+ bubbles: true,
+ cancelable: true,
+ detail: detail
+ });
+
+ // Dispatch the event
+ elem.dispatchEvent(event);
+
+ };
+
+ /**
+ * Get an element's distance from the top of the Document.
+ * @param {Node} elem The element
+ * @return {Number} Distance from the top in pixels
+ */
+ var getOffsetTop = function (elem) {
+ var location = 0;
+ if (elem.offsetParent) {
+ while (elem) {
+ location += elem.offsetTop;
+ elem = elem.offsetParent;
+ }
+ }
+ return location >= 0 ? location : 0;
+ };
+
+ /**
+ * Sort content from first to last in the DOM
+ * @param {Array} contents The content areas
+ */
+ var sortContents = function (contents) {
+ if(contents) {
+ contents.sort((function (item1, item2) {
+ var offset1 = getOffsetTop(item1.content);
+ var offset2 = getOffsetTop(item2.content);
+ if (offset1 < offset2) return -1;
+ return 1;
+ }));
+ }
+ };
+
+ /**
+ * Get the offset to use for calculating position
+ * @param {Object} settings The settings for this instantiation
+ * @return {Float} The number of pixels to offset the calculations
+ */
+ var getOffset = function (settings) {
+
+ // if the offset is a function run it
+ if (typeof settings.offset === 'function') {
+ return parseFloat(settings.offset());
+ }
+
+ // Otherwise, return it as-is
+ return parseFloat(settings.offset);
+
+ };
+
+ /**
+ * Get the document element's height
+ * @private
+ * @returns {Number}
+ */
+ var getDocumentHeight = function () {
+ return Math.max(
+ document.body.scrollHeight, document.documentElement.scrollHeight,
+ document.body.offsetHeight, document.documentElement.offsetHeight,
+ document.body.clientHeight, document.documentElement.clientHeight
+ );
+ };
+
+ /**
+ * Determine if an element is in view
+ * @param {Node} elem The element
+ * @param {Object} settings The settings for this instantiation
+ * @param {Boolean} bottom If true, check if element is above bottom of viewport instead
+ * @return {Boolean} Returns true if element is in the viewport
+ */
+ var isInView = function (elem, settings, bottom) {
+ var bounds = elem.getBoundingClientRect();
+ var offset = getOffset(settings);
+ if (bottom) {
+ return parseInt(bounds.bottom, 10) < (window.innerHeight || document.documentElement.clientHeight);
+ }
+ return parseInt(bounds.top, 10) <= offset;
+ };
+
+ /**
+ * Check if at the bottom of the viewport
+ * @return {Boolean} If true, page is at the bottom of the viewport
+ */
+ var isAtBottom = function () {
+ if (window.innerHeight + window.pageYOffset >= getDocumentHeight()) return true;
+ return false;
+ };
+
+ /**
+ * Check if the last item should be used (even if not at the top of the page)
+ * @param {Object} item The last item
+ * @param {Object} settings The settings for this instantiation
+ * @return {Boolean} If true, use the last item
+ */
+ var useLastItem = function (item, settings) {
+ if (isAtBottom() && isInView(item.content, settings, true)) return true;
+ return false;
+ };
+
+ /**
+ * Get the active content
+ * @param {Array} contents The content areas
+ * @param {Object} settings The settings for this instantiation
+ * @return {Object} The content area and matching navigation link
+ */
+ var getActive = function (contents, settings) {
+ var last = contents[contents.length-1];
+ if (useLastItem(last, settings)) return last;
+ for (var i = contents.length - 1; i >= 0; i--) {
+ if (isInView(contents[i].content, settings)) return contents[i];
+ }
+ };
+
+ /**
+ * Deactivate parent navs in a nested navigation
+ * @param {Node} nav The starting navigation element
+ * @param {Object} settings The settings for this instantiation
+ */
+ var deactivateNested = function (nav, settings) {
+
+ // If nesting isn't activated, bail
+ if (!settings.nested) return;
+
+ // Get the parent navigation
+ var li = nav.parentNode.closest('li');
+ if (!li) return;
+
+ // Remove the active class
+ li.classList.remove(settings.nestedClass);
+
+ // Apply recursively to any parent navigation elements
+ deactivateNested(li, settings);
+
+ };
+
+ /**
+ * Deactivate a nav and content area
+ * @param {Object} items The nav item and content to deactivate
+ * @param {Object} settings The settings for this instantiation
+ */
+ var deactivate = function (items, settings) {
+
+ // Make sure their are items to deactivate
+ if (!items) return;
+
+ // Get the parent list item
+ var li = items.nav.closest('li');
+ if (!li) return;
+
+ // Remove the active class from the nav and content
+ li.classList.remove(settings.navClass);
+ items.content.classList.remove(settings.contentClass);
+
+ // Deactivate any parent navs in a nested navigation
+ deactivateNested(li, settings);
+
+ // Emit a custom event
+ emitEvent('gumshoeDeactivate', li, {
+ link: items.nav,
+ content: items.content,
+ settings: settings
+ });
+
+ };
+
+
+ /**
+ * Activate parent navs in a nested navigation
+ * @param {Node} nav The starting navigation element
+ * @param {Object} settings The settings for this instantiation
+ */
+ var activateNested = function (nav, settings) {
+
+ // If nesting isn't activated, bail
+ if (!settings.nested) return;
+
+ // Get the parent navigation
+ var li = nav.parentNode.closest('li');
+ if (!li) return;
+
+ // Add the active class
+ li.classList.add(settings.nestedClass);
+
+ // Apply recursively to any parent navigation elements
+ activateNested(li, settings);
+
+ };
+
+ /**
+ * Activate a nav and content area
+ * @param {Object} items The nav item and content to activate
+ * @param {Object} settings The settings for this instantiation
+ */
+ var activate = function (items, settings) {
+
+ // Make sure their are items to activate
+ if (!items) return;
+
+ // Get the parent list item
+ var li = items.nav.closest('li');
+ if (!li) return;
+
+ // Add the active class to the nav and content
+ li.classList.add(settings.navClass);
+ items.content.classList.add(settings.contentClass);
+
+ // Activate any parent navs in a nested navigation
+ activateNested(li, settings);
+
+ // Emit a custom event
+ emitEvent('gumshoeActivate', li, {
+ link: items.nav,
+ content: items.content,
+ settings: settings
+ });
+
+ };
+
+ /**
+ * Create the Constructor object
+ * @param {String} selector The selector to use for navigation items
+ * @param {Object} options User options and settings
+ */
+ var Constructor = function (selector, options) {
+
+ //
+ // Variables
+ //
+
+ var publicAPIs = {};
+ var navItems, contents, current, timeout, settings;
+
+
+ //
+ // Methods
+ //
+
+ /**
+ * Set variables from DOM elements
+ */
+ publicAPIs.setup = function () {
+
+ // Get all nav items
+ navItems = document.querySelectorAll(selector);
+
+ // Create contents array
+ contents = [];
+
+ // Loop through each item, get it's matching content, and push to the array
+ Array.prototype.forEach.call(navItems, (function (item) {
+
+ // Get the content for the nav item
+ var content = document.getElementById(decodeURIComponent(item.hash.substr(1)));
+ if (!content) return;
+
+ // Push to the contents array
+ contents.push({
+ nav: item,
+ content: content
+ });
+
+ }));
+
+ // Sort contents by the order they appear in the DOM
+ sortContents(contents);
+
+ };
+
+ /**
+ * Detect which content is currently active
+ */
+ publicAPIs.detect = function () {
+
+ // Get the active content
+ var active = getActive(contents, settings);
+
+ // if there's no active content, deactivate and bail
+ if (!active) {
+ if (current) {
+ deactivate(current, settings);
+ current = null;
+ }
+ return;
+ }
+
+ // If the active content is the one currently active, do nothing
+ if (current && active.content === current.content) return;
+
+ // Deactivate the current content and activate the new content
+ deactivate(current, settings);
+ activate(active, settings);
+
+ // Update the currently active content
+ current = active;
+
+ };
+
+ /**
+ * Detect the active content on scroll
+ * Debounced for performance
+ */
+ var scrollHandler = function (event) {
+
+ // If there's a timer, cancel it
+ if (timeout) {
+ window.cancelAnimationFrame(timeout);
+ }
+
+ // Setup debounce callback
+ timeout = window.requestAnimationFrame(publicAPIs.detect);
+
+ };
+
+ /**
+ * Update content sorting on resize
+ * Debounced for performance
+ */
+ var resizeHandler = function (event) {
+
+ // If there's a timer, cancel it
+ if (timeout) {
+ window.cancelAnimationFrame(timeout);
+ }
+
+ // Setup debounce callback
+ timeout = window.requestAnimationFrame((function () {
+ sortContents(contents);
+ publicAPIs.detect();
+ }));
+
+ };
+
+ /**
+ * Destroy the current instantiation
+ */
+ publicAPIs.destroy = function () {
+
+ // Undo DOM changes
+ if (current) {
+ deactivate(current, settings);
+ }
+
+ // Remove event listeners
+ window.removeEventListener('scroll', scrollHandler, false);
+ if (settings.reflow) {
+ window.removeEventListener('resize', resizeHandler, false);
+ }
+
+ // Reset variables
+ contents = null;
+ navItems = null;
+ current = null;
+ timeout = null;
+ settings = null;
+
+ };
+
+ /**
+ * Initialize the current instantiation
+ */
+ var init = function () {
+
+ // Merge user options into defaults
+ settings = extend(defaults, options || {});
+
+ // Setup variables based on the current DOM
+ publicAPIs.setup();
+
+ // Find the currently active content
+ publicAPIs.detect();
+
+ // Setup event listeners
+ window.addEventListener('scroll', scrollHandler, false);
+ if (settings.reflow) {
+ window.addEventListener('resize', resizeHandler, false);
+ }
+
+ };
+
+
+ //
+ // Initialize and return the public APIs
+ //
+
+ init();
+ return publicAPIs;
+
+ };
+
+
+ //
+ // Return the Constructor
+ //
+
+ return Constructor;
+
+}));
\ No newline at end of file
diff --git a/assets/js/plugins/jquery.auto-redirect.js b/assets/js/plugins/jquery.auto-redirect.js
new file mode 100644
index 0000000..3f691ba
--- /dev/null
+++ b/assets/js/plugins/jquery.auto-redirect.js
@@ -0,0 +1,59 @@
+(function ($) {
+ var pluginName = "autoRedirect";
+ function Plugin(element, options) {
+ this.$el = $(element);
+ this.settings = $.extend({}, $.fn[pluginName].defaults, options, this.$el.data());
+ this.timer = null;
+ this.init();
+ }
+ Plugin.prototype = {
+ init: function () {
+ var self = this;
+ var delay = parseInt(self.settings.delay, 10);
+ var href = self.$el.attr("href");
+
+ if (!href) return;
+
+ var $info = $(" (将在 " + delay + " 秒后自动跳转,您也可以手动取消跳转) ");
+ self.$el.after($info);
+
+ self.timer = setInterval(function () {
+ delay--;
+ $info.find(".time").text(delay);
+ if (delay <= 0) {
+ clearInterval(self.timer);
+ window.location.href = href;
+ }
+ }, 1000);
+
+ $info.on("click", ".cancel-redirect", function () {
+ clearInterval(self.timer);
+ $info.text("");
+ });
+ },
+ destroy: function () {
+ clearInterval(this.timer);
+ this.$el.next(".redirect-info").remove();
+ }
+ };
+ $.fn[pluginName] = function (option) {
+ return this.each(function () {
+ var $this = $(this);
+ var instance = $this.data(pluginName);
+
+ if (!instance) {
+ $this.data(pluginName, new Plugin(this, option));
+ } else if (typeof option === "string" && instance[option]) {
+ instance[option]();
+ }
+ });
+ };
+ $.fn[pluginName].defaults = {
+ delay: 5
+ };
+ $(function () {
+ $("a[data-redirect]").each(function () {
+ $(this)[pluginName]();
+ });
+ });
+})(jQuery);
diff --git a/assets/js/plugins/jquery.ba-throttle-debounce.js b/assets/js/plugins/jquery.ba-throttle-debounce.js
new file mode 100644
index 0000000..fa30bdf
--- /dev/null
+++ b/assets/js/plugins/jquery.ba-throttle-debounce.js
@@ -0,0 +1,252 @@
+/*!
+ * jQuery throttle / debounce - v1.1 - 3/7/2010
+ * http://benalman.com/projects/jquery-throttle-debounce-plugin/
+ *
+ * Copyright (c) 2010 "Cowboy" Ben Alman
+ * Dual licensed under the MIT and GPL licenses.
+ * http://benalman.com/about/license/
+ */
+
+// Script: jQuery throttle / debounce: Sometimes, less is more!
+//
+// *Version: 1.1, Last updated: 3/7/2010*
+//
+// Project Home - http://benalman.com/projects/jquery-throttle-debounce-plugin/
+// GitHub - http://github.com/cowboy/jquery-throttle-debounce/
+// Source - http://github.com/cowboy/jquery-throttle-debounce/raw/master/jquery.ba-throttle-debounce.js
+// (Minified) - http://github.com/cowboy/jquery-throttle-debounce/raw/master/jquery.ba-throttle-debounce.min.js (0.7kb)
+//
+// About: License
+//
+// Copyright (c) 2010 "Cowboy" Ben Alman,
+// Dual licensed under the MIT and GPL licenses.
+// http://benalman.com/about/license/
+//
+// About: Examples
+//
+// These working examples, complete with fully commented code, illustrate a few
+// ways in which this plugin can be used.
+//
+// Throttle - http://benalman.com/code/projects/jquery-throttle-debounce/examples/throttle/
+// Debounce - http://benalman.com/code/projects/jquery-throttle-debounce/examples/debounce/
+//
+// About: Support and Testing
+//
+// Information about what version or versions of jQuery this plugin has been
+// tested with, what browsers it has been tested in, and where the unit tests
+// reside (so you can test it yourself).
+//
+// jQuery Versions - none, 1.3.2, 1.4.2
+// Browsers Tested - Internet Explorer 6-8, Firefox 2-3.6, Safari 3-4, Chrome 4-5, Opera 9.6-10.1.
+// Unit Tests - http://benalman.com/code/projects/jquery-throttle-debounce/unit/
+//
+// About: Release History
+//
+// 1.1 - (3/7/2010) Fixed a bug in where trailing callbacks
+// executed later than they should. Reworked a fair amount of internal
+// logic as well.
+// 1.0 - (3/6/2010) Initial release as a stand-alone project. Migrated over
+// from jquery-misc repo v0.4 to jquery-throttle repo v1.0, added the
+// no_trailing throttle parameter and debounce functionality.
+//
+// Topic: Note for non-jQuery users
+//
+// jQuery isn't actually required for this plugin, because nothing internal
+// uses any jQuery methods or properties. jQuery is just used as a namespace
+// under which these methods can exist.
+//
+// Since jQuery isn't actually required for this plugin, if jQuery doesn't exist
+// when this plugin is loaded, the method described below will be created in
+// the `Cowboy` namespace. Usage will be exactly the same, but instead of
+// $.method() or jQuery.method(), you'll need to use Cowboy.method().
+
+(function(window,undefined){
+ '$:nomunge'; // Used by YUI compressor.
+
+ // Since jQuery really isn't required for this plugin, use `jQuery` as the
+ // namespace only if it already exists, otherwise use the `Cowboy` namespace,
+ // creating it if necessary.
+ var $ = window.jQuery || window.Cowboy || ( window.Cowboy = {} ),
+
+ // Internal method reference.
+ jq_throttle;
+
+ // Method: jQuery.throttle
+ //
+ // Throttle execution of a function. Especially useful for rate limiting
+ // execution of handlers on events like resize and scroll. If you want to
+ // rate-limit execution of a function to a single time, see the
+ // method.
+ //
+ // In this visualization, | is a throttled-function call and X is the actual
+ // callback execution:
+ //
+ // > Throttled with `no_trailing` specified as false or unspecified:
+ // > ||||||||||||||||||||||||| (pause) |||||||||||||||||||||||||
+ // > X X X X X X X X X X X X
+ // >
+ // > Throttled with `no_trailing` specified as true:
+ // > ||||||||||||||||||||||||| (pause) |||||||||||||||||||||||||
+ // > X X X X X X X X X X
+ //
+ // Usage:
+ //
+ // > var throttled = jQuery.throttle( delay, [ no_trailing, ] callback );
+ // >
+ // > jQuery('selector').bind( 'someevent', throttled );
+ // > jQuery('selector').unbind( 'someevent', throttled );
+ //
+ // This also works in jQuery 1.4+:
+ //
+ // > jQuery('selector').bind( 'someevent', jQuery.throttle( delay, [ no_trailing, ] callback ) );
+ // > jQuery('selector').unbind( 'someevent', callback );
+ //
+ // Arguments:
+ //
+ // delay - (Number) A zero-or-greater delay in milliseconds. For event
+ // callbacks, values around 100 or 250 (or even higher) are most useful.
+ // no_trailing - (Boolean) Optional, defaults to false. If no_trailing is
+ // true, callback will only execute every `delay` milliseconds while the
+ // throttled-function is being called. If no_trailing is false or
+ // unspecified, callback will be executed one final time after the last
+ // throttled-function call. (After the throttled-function has not been
+ // called for `delay` milliseconds, the internal counter is reset)
+ // callback - (Function) A function to be executed after delay milliseconds.
+ // The `this` context and all arguments are passed through, as-is, to
+ // `callback` when the throttled-function is executed.
+ //
+ // Returns:
+ //
+ // (Function) A new, throttled, function.
+
+ $.throttle = jq_throttle = function( delay, no_trailing, callback, debounce_mode ) {
+ // After wrapper has stopped being called, this timeout ensures that
+ // `callback` is executed at the proper times in `throttle` and `end`
+ // debounce modes.
+ var timeout_id,
+
+ // Keep track of the last time `callback` was executed.
+ last_exec = 0;
+
+ // `no_trailing` defaults to falsy.
+ if ( typeof no_trailing !== 'boolean' ) {
+ debounce_mode = callback;
+ callback = no_trailing;
+ no_trailing = undefined;
+ }
+
+ // The `wrapper` function encapsulates all of the throttling / debouncing
+ // functionality and when executed will limit the rate at which `callback`
+ // is executed.
+ function wrapper() {
+ var that = this,
+ elapsed = +new Date() - last_exec,
+ args = arguments;
+
+ // Execute `callback` and update the `last_exec` timestamp.
+ function exec() {
+ last_exec = +new Date();
+ callback.apply( that, args );
+ };
+
+ // If `debounce_mode` is true (at_begin) this is used to clear the flag
+ // to allow future `callback` executions.
+ function clear() {
+ timeout_id = undefined;
+ };
+
+ if ( debounce_mode && !timeout_id ) {
+ // Since `wrapper` is being called for the first time and
+ // `debounce_mode` is true (at_begin), execute `callback`.
+ exec();
+ }
+
+ // Clear any existing timeout.
+ timeout_id && clearTimeout( timeout_id );
+
+ if ( debounce_mode === undefined && elapsed > delay ) {
+ // In throttle mode, if `delay` time has been exceeded, execute
+ // `callback`.
+ exec();
+
+ } else if ( no_trailing !== true ) {
+ // In trailing throttle mode, since `delay` time has not been
+ // exceeded, schedule `callback` to execute `delay` ms after most
+ // recent execution.
+ //
+ // If `debounce_mode` is true (at_begin), schedule `clear` to execute
+ // after `delay` ms.
+ //
+ // If `debounce_mode` is false (at end), schedule `callback` to
+ // execute after `delay` ms.
+ timeout_id = setTimeout( debounce_mode ? clear : exec, debounce_mode === undefined ? delay - elapsed : delay );
+ }
+ };
+
+ // Set the guid of `wrapper` function to the same of original callback, so
+ // it can be removed in jQuery 1.4+ .unbind or .die by using the original
+ // callback as a reference.
+ if ( $.guid ) {
+ wrapper.guid = callback.guid = callback.guid || $.guid++;
+ }
+
+ // Return the wrapper function.
+ return wrapper;
+ };
+
+ // Method: jQuery.debounce
+ //
+ // Debounce execution of a function. Debouncing, unlike throttling,
+ // guarantees that a function is only executed a single time, either at the
+ // very beginning of a series of calls, or at the very end. If you want to
+ // simply rate-limit execution of a function, see the
+ // method.
+ //
+ // In this visualization, | is a debounced-function call and X is the actual
+ // callback execution:
+ //
+ // > Debounced with `at_begin` specified as false or unspecified:
+ // > ||||||||||||||||||||||||| (pause) |||||||||||||||||||||||||
+ // > X X
+ // >
+ // > Debounced with `at_begin` specified as true:
+ // > ||||||||||||||||||||||||| (pause) |||||||||||||||||||||||||
+ // > X X
+ //
+ // Usage:
+ //
+ // > var debounced = jQuery.debounce( delay, [ at_begin, ] callback );
+ // >
+ // > jQuery('selector').bind( 'someevent', debounced );
+ // > jQuery('selector').unbind( 'someevent', debounced );
+ //
+ // This also works in jQuery 1.4+:
+ //
+ // > jQuery('selector').bind( 'someevent', jQuery.debounce( delay, [ at_begin, ] callback ) );
+ // > jQuery('selector').unbind( 'someevent', callback );
+ //
+ // Arguments:
+ //
+ // delay - (Number) A zero-or-greater delay in milliseconds. For event
+ // callbacks, values around 100 or 250 (or even higher) are most useful.
+ // at_begin - (Boolean) Optional, defaults to false. If at_begin is false or
+ // unspecified, callback will only be executed `delay` milliseconds after
+ // the last debounced-function call. If at_begin is true, callback will be
+ // executed only at the first debounced-function call. (After the
+ // throttled-function has not been called for `delay` milliseconds, the
+ // internal counter is reset)
+ // callback - (Function) A function to be executed after delay milliseconds.
+ // The `this` context and all arguments are passed through, as-is, to
+ // `callback` when the debounced-function is executed.
+ //
+ // Returns:
+ //
+ // (Function) A new, debounced, function.
+
+ $.debounce = function( delay, at_begin, callback ) {
+ return callback === undefined
+ ? jq_throttle( delay, at_begin, false )
+ : jq_throttle( delay, callback, at_begin !== false );
+ };
+
+})(this);
diff --git a/assets/js/plugins/jquery.fitvids.js b/assets/js/plugins/jquery.fitvids.js
new file mode 100644
index 0000000..5c2f85c
--- /dev/null
+++ b/assets/js/plugins/jquery.fitvids.js
@@ -0,0 +1,82 @@
+/*jshint browser:true */
+/*!
+* FitVids 1.1
+*
+* Copyright 2013, Chris Coyier - http://css-tricks.com + Dave Rupert - http://daverupert.com
+* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/
+* Released under the WTFPL license - http://sam.zoy.org/wtfpl/
+*
+*/
+
+;(function( $ ){
+
+ 'use strict';
+
+ $.fn.fitVids = function( options ) {
+ var settings = {
+ customSelector: null,
+ ignore: null
+ };
+
+ if(!document.getElementById('fit-vids-style')) {
+ // appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js
+ var head = document.head || document.getElementsByTagName('head')[0];
+ var css = '.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}';
+ var div = document.createElement("div");
+ div.innerHTML = '
x
';
+ head.appendChild(div.childNodes[1]);
+ }
+
+ if ( options ) {
+ $.extend( settings, options );
+ }
+
+ return this.each(function(){
+ var selectors = [
+ 'iframe[src*="player.vimeo.com"]',
+ 'iframe[src*="youtube.com"]',
+ 'iframe[src*="youtube-nocookie.com"]',
+ 'iframe[src*="kickstarter.com"][src*="video.html"]',
+ 'object',
+ 'embed'
+ ];
+
+ if (settings.customSelector) {
+ selectors.push(settings.customSelector);
+ }
+
+ var ignoreList = '.fitvidsignore';
+
+ if(settings.ignore) {
+ ignoreList = ignoreList + ', ' + settings.ignore;
+ }
+
+ var $allVideos = $(this).find(selectors.join(','));
+ $allVideos = $allVideos.not('object object'); // SwfObj conflict patch
+ $allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video.
+
+ $allVideos.each(function(count){
+ var $this = $(this);
+ if($this.parents(ignoreList).length > 0) {
+ return; // Disable FitVids on this video.
+ }
+ if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; }
+ if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width'))))
+ {
+ $this.attr('height', 9);
+ $this.attr('width', 16);
+ }
+ var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(),
+ width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(),
+ aspectRatio = height / width;
+ if(!$this.attr('id')){
+ var videoID = 'fitvid' + count;
+ $this.attr('id', videoID);
+ }
+ $this.wrap('').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+'%');
+ $this.removeAttr('height').removeAttr('width');
+ });
+ });
+ };
+// Works with either jQuery or Zepto
+})( window.jQuery || window.Zepto );
\ No newline at end of file
diff --git a/assets/js/plugins/jquery.greedy-navigation.js b/assets/js/plugins/jquery.greedy-navigation.js
new file mode 100644
index 0000000..a12ec3e
--- /dev/null
+++ b/assets/js/plugins/jquery.greedy-navigation.js
@@ -0,0 +1,132 @@
+/*
+GreedyNav.js - https://github.com/lukejacksonn/GreedyNav
+Licensed under the MIT license - http://opensource.org/licenses/MIT
+Copyright (c) 2015 Luke Jackson http://lukejacksonn.com
+*/
+
+$(function() {
+
+ var $btn = $("nav.greedy-nav .greedy-nav__toggle");
+ var $vlinks = $("nav.greedy-nav .visible-links");
+ var $hlinks = $("nav.greedy-nav .hidden-links");
+ var $nav = $("nav.greedy-nav");
+ var $logo = $('nav.greedy-nav .site-logo');
+ var $logoImg = $('nav.greedy-nav .site-logo img');
+ var $title = $("nav.greedy-nav .site-title");
+ var $search = $('nav.greedy-nav button.search__toggle');
+
+ var numOfItems, totalSpace, closingTime, breakWidths;
+
+ // This function measures both hidden and visible links and sets the navbar breakpoints
+ // This is called the first time the script runs and everytime the "check()" function detects a change of window width that reached a different CSS width breakpoint, which affects the size of navbar Items
+ // Please note that "CSS width breakpoints" (which are only 4) !== "navbar breakpoints" (which are as many as the number of items on the navbar)
+ function measureLinks(){
+ numOfItems = 0;
+ totalSpace = 0;
+ closingTime = 1000;
+ breakWidths = [];
+
+ // Adds the width of a navItem in order to create breakpoints for the navbar
+ function addWidth(i, w) {
+ totalSpace += w;
+ numOfItems += 1;
+ breakWidths.push(totalSpace);
+ }
+
+ // Measures the width of hidden links by making a temporary clone of them and positioning under visible links
+ function hiddenWidth(obj){
+ var clone = obj.clone();
+ clone.css("visibility","hidden");
+ $vlinks.append(clone);
+ addWidth(0, clone.outerWidth());
+ clone.remove();
+ }
+ // Measure both visible and hidden links widths
+ $vlinks.children().outerWidth(addWidth);
+ $hlinks.children().each(function(){hiddenWidth($(this))});
+ }
+ // Get initial state
+ measureLinks();
+
+ var winWidth = $( window ).width();
+ // Set the last measured CSS width breakpoint: 0: <768px, 1: <1024px, 2: < 1280px, 3: >= 1280px.
+ var lastBreakpoint = winWidth < 768 ? 0 : winWidth < 1024 ? 1 : winWidth < 1280 ? 2 : 3;
+
+ var availableSpace, numOfVisibleItems, requiredSpace, timer;
+
+ function check() {
+
+ winWidth = $( window ).width();
+ // Set the current CSS width breakpoint: 0: <768px, 1: <1024px, 2: < 1280px, 3: >= 1280px.
+ var curBreakpoint = winWidth < 768 ? 0 : winWidth < 1024 ? 1 : winWidth < 1280 ? 2 : 3;
+ // If current breakpoint is different from last measured breakpoint, measureLinks again
+ if(curBreakpoint !== lastBreakpoint) measureLinks();
+ // Set the last measured CSS width breakpoint with the current breakpoint
+ lastBreakpoint = curBreakpoint;
+
+ // Get instant state
+ numOfVisibleItems = $vlinks.children().length;
+ // Decrease the width of visible elements from the nav innerWidth to find out the available space for navItems
+ availableSpace = /* nav */ $nav.innerWidth()
+ - /* logo */ ($logo.length !== 0 ? $logo.outerWidth(true) : 0)
+ - /* title */ $title.outerWidth(true)
+ - /* search */ ($search.length !== 0 ? $search.outerWidth(true) : 0)
+ - /* toggle */ (numOfVisibleItems !== breakWidths.length ? $btn.outerWidth(true) : 0);
+ requiredSpace = breakWidths[numOfVisibleItems - 1];
+
+ // There is not enought space
+ if (requiredSpace > availableSpace) {
+ $vlinks.children().last().prependTo($hlinks);
+ numOfVisibleItems -= 1;
+ check();
+ // There is more than enough space. If only one element is hidden, add the toggle width to the available space
+ } else if (availableSpace + (numOfVisibleItems === breakWidths.length - 1?$btn.outerWidth(true):0) > breakWidths[numOfVisibleItems]) {
+ $hlinks.children().first().appendTo($vlinks);
+ numOfVisibleItems += 1;
+ check();
+ }
+ // Update the button accordingly
+ $btn.attr("count", numOfItems - numOfVisibleItems);
+ if (numOfVisibleItems === numOfItems) {
+ $btn.addClass('hidden');
+ } else $btn.removeClass('hidden');
+ }
+
+ // Window listeners
+ $(window).resize(function() {
+ check();
+ });
+
+ $btn.on('click', function() {
+ $hlinks.toggleClass('hidden');
+ $(this).toggleClass('close');
+ clearTimeout(timer);
+ });
+
+ $hlinks.on("click", function () {
+ // Hide the hidden links & remove the overlay when one is clicked.
+ $hlinks.addClass("hidden");
+ $btn.removeClass("close");
+ }).on('mouseleave', function() {
+ // Mouse has left, start the timer
+ timer = setTimeout(function() {
+ $hlinks.addClass('hidden');
+ $('.greedy-nav__toggle').removeClass('close');
+ }, closingTime);
+ }).on('mouseenter', function() {
+ // Mouse is back, cancel the timer
+ clearTimeout(timer);
+ })
+
+ // check if page has a logo
+ if($logoImg.length !== 0){
+ // check if logo is not loaded
+ if(!($logoImg[0].complete || $logoImg[0].naturalWidth !== 0)){
+ // if logo is not loaded wait for logo to load or fail to check
+ $logoImg.one("load error", check);
+ // if logo is already loaded just check
+ } else check();
+ // if page does not have a logo just check
+ } else check();
+
+});
diff --git a/assets/js/plugins/jquery.magnific-popup.js b/assets/js/plugins/jquery.magnific-popup.js
new file mode 100644
index 0000000..7d1d197
--- /dev/null
+++ b/assets/js/plugins/jquery.magnific-popup.js
@@ -0,0 +1,1860 @@
+/*! Magnific Popup - v1.1.0 - 2016-02-20
+* http://dimsemenov.com/plugins/magnific-popup/
+* Copyright (c) 2016 Dmitry Semenov; */
+;(function (factory) {
+ if (typeof define === 'function' && define.amd) {
+ // AMD. Register as an anonymous module.
+ define(['jquery'], factory);
+ } else if (typeof exports === 'object') {
+ // Node/CommonJS
+ factory(require('jquery'));
+ } else {
+ // Browser globals
+ factory(window.jQuery || window.Zepto);
+ }
+ }(function($) {
+
+ /*>>core*/
+ /**
+ *
+ * Magnific Popup Core JS file
+ *
+ */
+
+
+ /**
+ * Private static constants
+ */
+ var CLOSE_EVENT = 'Close',
+ BEFORE_CLOSE_EVENT = 'BeforeClose',
+ AFTER_CLOSE_EVENT = 'AfterClose',
+ BEFORE_APPEND_EVENT = 'BeforeAppend',
+ MARKUP_PARSE_EVENT = 'MarkupParse',
+ OPEN_EVENT = 'Open',
+ CHANGE_EVENT = 'Change',
+ NS = 'mfp',
+ EVENT_NS = '.' + NS,
+ READY_CLASS = 'mfp-ready',
+ REMOVING_CLASS = 'mfp-removing',
+ PREVENT_CLOSE_CLASS = 'mfp-prevent-close';
+
+
+ /**
+ * Private vars
+ */
+ /*jshint -W079 */
+ var mfp, // As we have only one instance of MagnificPopup object, we define it locally to not to use 'this'
+ MagnificPopup = function(){},
+ _isJQ = !!(window.jQuery),
+ _prevStatus,
+ _window = $(window),
+ _document,
+ _prevContentType,
+ _wrapClasses,
+ _currPopupType;
+
+
+ /**
+ * Private functions
+ */
+ var _mfpOn = function(name, f) {
+ mfp.ev.on(NS + name + EVENT_NS, f);
+ },
+ _getEl = function(className, appendTo, html, raw) {
+ var el = document.createElement('div');
+ el.className = 'mfp-'+className;
+ if(html) {
+ el.innerHTML = html;
+ }
+ if(!raw) {
+ el = $(el);
+ if(appendTo) {
+ el.appendTo(appendTo);
+ }
+ } else if(appendTo) {
+ appendTo.appendChild(el);
+ }
+ return el;
+ },
+ _mfpTrigger = function(e, data) {
+ mfp.ev.triggerHandler(NS + e, data);
+
+ if(mfp.st.callbacks) {
+ // converts "mfpEventName" to "eventName" callback and triggers it if it's present
+ e = e.charAt(0).toLowerCase() + e.slice(1);
+ if(mfp.st.callbacks[e]) {
+ mfp.st.callbacks[e].apply(mfp, $.isArray(data) ? data : [data]);
+ }
+ }
+ },
+ _getCloseBtn = function(type) {
+ if(type !== _currPopupType || !mfp.currTemplate.closeBtn) {
+ mfp.currTemplate.closeBtn = $( mfp.st.closeMarkup.replace('%title%', mfp.st.tClose ) );
+ _currPopupType = type;
+ }
+ return mfp.currTemplate.closeBtn;
+ },
+ // Initialize Magnific Popup only when called at least once
+ _checkInstance = function() {
+ if(!$.magnificPopup.instance) {
+ /*jshint -W020 */
+ mfp = new MagnificPopup();
+ mfp.init();
+ $.magnificPopup.instance = mfp;
+ }
+ },
+ // CSS transition detection, http://stackoverflow.com/questions/7264899/detect-css-transitions-using-javascript-and-without-modernizr
+ supportsTransitions = function() {
+ var s = document.createElement('p').style, // 's' for style. better to create an element if body yet to exist
+ v = ['ms','O','Moz','Webkit']; // 'v' for vendor
+
+ if( s['transition'] !== undefined ) {
+ return true;
+ }
+
+ while( v.length ) {
+ if( v.pop() + 'Transition' in s ) {
+ return true;
+ }
+ }
+
+ return false;
+ };
+
+
+
+ /**
+ * Public functions
+ */
+ MagnificPopup.prototype = {
+
+ constructor: MagnificPopup,
+
+ /**
+ * Initializes Magnific Popup plugin.
+ * This function is triggered only once when $.fn.magnificPopup or $.magnificPopup is executed
+ */
+ init: function() {
+ var appVersion = navigator.appVersion;
+ mfp.isLowIE = mfp.isIE8 = document.all && !document.addEventListener;
+ mfp.isAndroid = (/android/gi).test(appVersion);
+ mfp.isIOS = (/iphone|ipad|ipod/gi).test(appVersion);
+ mfp.supportsTransition = supportsTransitions();
+
+ // We disable fixed positioned lightbox on devices that don't handle it nicely.
+ // If you know a better way of detecting this - let me know.
+ mfp.probablyMobile = (mfp.isAndroid || mfp.isIOS || /(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent) );
+ _document = $(document);
+
+ mfp.popupsCache = {};
+ },
+
+ /**
+ * Opens popup
+ * @param data [description]
+ */
+ open: function(data) {
+
+ var i;
+
+ if(data.isObj === false) {
+ // convert jQuery collection to array to avoid conflicts later
+ mfp.items = data.items.toArray();
+
+ mfp.index = 0;
+ var items = data.items,
+ item;
+ for(i = 0; i < items.length; i++) {
+ item = items[i];
+ if(item.parsed) {
+ item = item.el[0];
+ }
+ if(item === data.el[0]) {
+ mfp.index = i;
+ break;
+ }
+ }
+ } else {
+ mfp.items = $.isArray(data.items) ? data.items : [data.items];
+ mfp.index = data.index || 0;
+ }
+
+ // if popup is already opened - we just update the content
+ if(mfp.isOpen) {
+ mfp.updateItemHTML();
+ return;
+ }
+
+ mfp.types = [];
+ _wrapClasses = '';
+ if(data.mainEl && data.mainEl.length) {
+ mfp.ev = data.mainEl.eq(0);
+ } else {
+ mfp.ev = _document;
+ }
+
+ if(data.key) {
+ if(!mfp.popupsCache[data.key]) {
+ mfp.popupsCache[data.key] = {};
+ }
+ mfp.currTemplate = mfp.popupsCache[data.key];
+ } else {
+ mfp.currTemplate = {};
+ }
+
+
+
+ mfp.st = $.extend(true, {}, $.magnificPopup.defaults, data );
+ mfp.fixedContentPos = mfp.st.fixedContentPos === 'auto' ? !mfp.probablyMobile : mfp.st.fixedContentPos;
+
+ if(mfp.st.modal) {
+ mfp.st.closeOnContentClick = false;
+ mfp.st.closeOnBgClick = false;
+ mfp.st.showCloseBtn = false;
+ mfp.st.enableEscapeKey = false;
+ }
+
+
+ // Building markup
+ // main containers are created only once
+ if(!mfp.bgOverlay) {
+
+ // Dark overlay
+ mfp.bgOverlay = _getEl('bg').on('click'+EVENT_NS, function() {
+ mfp.close();
+ });
+
+ mfp.wrap = _getEl('wrap').attr('tabindex', -1).on('click'+EVENT_NS, function(e) {
+ if(mfp._checkIfClose(e.target)) {
+ mfp.close();
+ }
+ });
+
+ mfp.container = _getEl('container', mfp.wrap);
+ }
+
+ mfp.contentContainer = _getEl('content');
+ if(mfp.st.preloader) {
+ mfp.preloader = _getEl('preloader', mfp.container, mfp.st.tLoading);
+ }
+
+
+ // Initializing modules
+ var modules = $.magnificPopup.modules;
+ for(i = 0; i < modules.length; i++) {
+ var n = modules[i];
+ n = n.charAt(0).toUpperCase() + n.slice(1);
+ mfp['init'+n].call(mfp);
+ }
+ _mfpTrigger('BeforeOpen');
+
+
+ if(mfp.st.showCloseBtn) {
+ // Close button
+ if(!mfp.st.closeBtnInside) {
+ mfp.wrap.append( _getCloseBtn() );
+ } else {
+ _mfpOn(MARKUP_PARSE_EVENT, function(e, template, values, item) {
+ values.close_replaceWith = _getCloseBtn(item.type);
+ });
+ _wrapClasses += ' mfp-close-btn-in';
+ }
+ }
+
+ if(mfp.st.alignTop) {
+ _wrapClasses += ' mfp-align-top';
+ }
+
+
+
+ if(mfp.fixedContentPos) {
+ mfp.wrap.css({
+ overflow: mfp.st.overflowY,
+ overflowX: 'hidden',
+ overflowY: mfp.st.overflowY
+ });
+ } else {
+ mfp.wrap.css({
+ top: _window.scrollTop(),
+ position: 'absolute'
+ });
+ }
+ if( mfp.st.fixedBgPos === false || (mfp.st.fixedBgPos === 'auto' && !mfp.fixedContentPos) ) {
+ mfp.bgOverlay.css({
+ height: _document.height(),
+ position: 'absolute'
+ });
+ }
+
+
+
+ if(mfp.st.enableEscapeKey) {
+ // Close on ESC key
+ _document.on('keyup' + EVENT_NS, function(e) {
+ if(e.keyCode === 27) {
+ mfp.close();
+ }
+ });
+ }
+
+ _window.on('resize' + EVENT_NS, function() {
+ mfp.updateSize();
+ });
+
+
+ if(!mfp.st.closeOnContentClick) {
+ _wrapClasses += ' mfp-auto-cursor';
+ }
+
+ if(_wrapClasses)
+ mfp.wrap.addClass(_wrapClasses);
+
+
+ // this triggers recalculation of layout, so we get it once to not to trigger twice
+ var windowHeight = mfp.wH = _window.height();
+
+
+ var windowStyles = {};
+
+ if( mfp.fixedContentPos ) {
+ if(mfp._hasScrollBar(windowHeight)){
+ var s = mfp._getScrollbarSize();
+ if(s) {
+ windowStyles.marginRight = s;
+ }
+ }
+ }
+
+ if(mfp.fixedContentPos) {
+ if(!mfp.isIE7) {
+ windowStyles.overflow = 'hidden';
+ } else {
+ // ie7 double-scroll bug
+ $('body, html').css('overflow', 'hidden');
+ }
+ }
+
+
+
+ var classesToadd = mfp.st.mainClass;
+ if(mfp.isIE7) {
+ classesToadd += ' mfp-ie7';
+ }
+ if(classesToadd) {
+ mfp._addClassToMFP( classesToadd );
+ }
+
+ // add content
+ mfp.updateItemHTML();
+
+ _mfpTrigger('BuildControls');
+
+ // remove scrollbar, add margin e.t.c
+ $('html').css(windowStyles);
+
+ // add everything to DOM
+ mfp.bgOverlay.add(mfp.wrap).prependTo( mfp.st.prependTo || $(document.body) );
+
+ // Save last focused element
+ mfp._lastFocusedEl = document.activeElement;
+
+ // Wait for next cycle to allow CSS transition
+ setTimeout(function() {
+
+ if(mfp.content) {
+ mfp._addClassToMFP(READY_CLASS);
+ mfp._setFocus();
+ } else {
+ // if content is not defined (not loaded e.t.c) we add class only for BG
+ mfp.bgOverlay.addClass(READY_CLASS);
+ }
+
+ // Trap the focus in popup
+ _document.on('focusin' + EVENT_NS, mfp._onFocusIn);
+
+ }, 16);
+
+ mfp.isOpen = true;
+ mfp.updateSize(windowHeight);
+ _mfpTrigger(OPEN_EVENT);
+
+ return data;
+ },
+
+ /**
+ * Closes the popup
+ */
+ close: function() {
+ if(!mfp.isOpen) return;
+ _mfpTrigger(BEFORE_CLOSE_EVENT);
+
+ mfp.isOpen = false;
+ // for CSS3 animation
+ if(mfp.st.removalDelay && !mfp.isLowIE && mfp.supportsTransition ) {
+ mfp._addClassToMFP(REMOVING_CLASS);
+ setTimeout(function() {
+ mfp._close();
+ }, mfp.st.removalDelay);
+ } else {
+ mfp._close();
+ }
+ },
+
+ /**
+ * Helper for close() function
+ */
+ _close: function() {
+ _mfpTrigger(CLOSE_EVENT);
+
+ var classesToRemove = REMOVING_CLASS + ' ' + READY_CLASS + ' ';
+
+ mfp.bgOverlay.detach();
+ mfp.wrap.detach();
+ mfp.container.empty();
+
+ if(mfp.st.mainClass) {
+ classesToRemove += mfp.st.mainClass + ' ';
+ }
+
+ mfp._removeClassFromMFP(classesToRemove);
+
+ if(mfp.fixedContentPos) {
+ var windowStyles = {marginRight: ''};
+ if(mfp.isIE7) {
+ $('body, html').css('overflow', '');
+ } else {
+ windowStyles.overflow = '';
+ }
+ $('html').css(windowStyles);
+ }
+
+ _document.off('keyup' + EVENT_NS + ' focusin' + EVENT_NS);
+ mfp.ev.off(EVENT_NS);
+
+ // clean up DOM elements that aren't removed
+ mfp.wrap.attr('class', 'mfp-wrap').removeAttr('style');
+ mfp.bgOverlay.attr('class', 'mfp-bg');
+ mfp.container.attr('class', 'mfp-container');
+
+ // remove close button from target element
+ if(mfp.st.showCloseBtn &&
+ (!mfp.st.closeBtnInside || mfp.currTemplate[mfp.currItem.type] === true)) {
+ if(mfp.currTemplate.closeBtn)
+ mfp.currTemplate.closeBtn.detach();
+ }
+
+
+ if(mfp.st.autoFocusLast && mfp._lastFocusedEl) {
+ $(mfp._lastFocusedEl).focus(); // put tab focus back
+ }
+ mfp.currItem = null;
+ mfp.content = null;
+ mfp.currTemplate = null;
+ mfp.prevHeight = 0;
+
+ _mfpTrigger(AFTER_CLOSE_EVENT);
+ },
+
+ updateSize: function(winHeight) {
+
+ if(mfp.isIOS) {
+ // fixes iOS nav bars https://github.com/dimsemenov/Magnific-Popup/issues/2
+ var zoomLevel = document.documentElement.clientWidth / window.innerWidth;
+ var height = window.innerHeight * zoomLevel;
+ mfp.wrap.css('height', height);
+ mfp.wH = height;
+ } else {
+ mfp.wH = winHeight || _window.height();
+ }
+ // Fixes #84: popup incorrectly positioned with position:relative on body
+ if(!mfp.fixedContentPos) {
+ mfp.wrap.css('height', mfp.wH);
+ }
+
+ _mfpTrigger('Resize');
+
+ },
+
+ /**
+ * Set content of popup based on current index
+ */
+ updateItemHTML: function() {
+ var item = mfp.items[mfp.index];
+
+ // Detach and perform modifications
+ mfp.contentContainer.detach();
+
+ if(mfp.content)
+ mfp.content.detach();
+
+ if(!item.parsed) {
+ item = mfp.parseEl( mfp.index );
+ }
+
+ var type = item.type;
+
+ _mfpTrigger('BeforeChange', [mfp.currItem ? mfp.currItem.type : '', type]);
+ // BeforeChange event works like so:
+ // _mfpOn('BeforeChange', function(e, prevType, newType) { });
+
+ mfp.currItem = item;
+
+ if(!mfp.currTemplate[type]) {
+ var markup = mfp.st[type] ? mfp.st[type].markup : false;
+
+ // allows to modify markup
+ _mfpTrigger('FirstMarkupParse', markup);
+
+ if(markup) {
+ mfp.currTemplate[type] = $(markup);
+ } else {
+ // if there is no markup found we just define that template is parsed
+ mfp.currTemplate[type] = true;
+ }
+ }
+
+ if(_prevContentType && _prevContentType !== item.type) {
+ mfp.container.removeClass('mfp-'+_prevContentType+'-holder');
+ }
+
+ var newContent = mfp['get' + type.charAt(0).toUpperCase() + type.slice(1)](item, mfp.currTemplate[type]);
+ mfp.appendContent(newContent, type);
+
+ item.preloaded = true;
+
+ _mfpTrigger(CHANGE_EVENT, item);
+ _prevContentType = item.type;
+
+ // Append container back after its content changed
+ mfp.container.prepend(mfp.contentContainer);
+
+ _mfpTrigger('AfterChange');
+ },
+
+
+ /**
+ * Set HTML content of popup
+ */
+ appendContent: function(newContent, type) {
+ mfp.content = newContent;
+
+ if(newContent) {
+ if(mfp.st.showCloseBtn && mfp.st.closeBtnInside &&
+ mfp.currTemplate[type] === true) {
+ // if there is no markup, we just append close button element inside
+ if(!mfp.content.find('.mfp-close').length) {
+ mfp.content.append(_getCloseBtn());
+ }
+ } else {
+ mfp.content = newContent;
+ }
+ } else {
+ mfp.content = '';
+ }
+
+ _mfpTrigger(BEFORE_APPEND_EVENT);
+ mfp.container.addClass('mfp-'+type+'-holder');
+
+ mfp.contentContainer.append(mfp.content);
+ },
+
+
+ /**
+ * Creates Magnific Popup data object based on given data
+ * @param {int} index Index of item to parse
+ */
+ parseEl: function(index) {
+ var item = mfp.items[index],
+ type;
+
+ if(item.tagName) {
+ item = { el: $(item) };
+ } else {
+ type = item.type;
+ item = { data: item, src: item.src };
+ }
+
+ if(item.el) {
+ var types = mfp.types;
+
+ // check for 'mfp-TYPE' class
+ for(var i = 0; i < types.length; i++) {
+ if( item.el.hasClass('mfp-'+types[i]) ) {
+ type = types[i];
+ break;
+ }
+ }
+
+ item.src = item.el.attr('data-mfp-src');
+ if(!item.src) {
+ item.src = item.el.attr('href');
+ }
+ }
+
+ item.type = type || mfp.st.type || 'inline';
+ item.index = index;
+ item.parsed = true;
+ mfp.items[index] = item;
+ _mfpTrigger('ElementParse', item);
+
+ return mfp.items[index];
+ },
+
+
+ /**
+ * Initializes single popup or a group of popups
+ */
+ addGroup: function(el, options) {
+ var eHandler = function(e) {
+ e.mfpEl = this;
+ mfp._openClick(e, el, options);
+ };
+
+ if(!options) {
+ options = {};
+ }
+
+ var eName = 'click.magnificPopup';
+ options.mainEl = el;
+
+ if(options.items) {
+ options.isObj = true;
+ el.off(eName).on(eName, eHandler);
+ } else {
+ options.isObj = false;
+ if(options.delegate) {
+ el.off(eName).on(eName, options.delegate , eHandler);
+ } else {
+ options.items = el;
+ el.off(eName).on(eName, eHandler);
+ }
+ }
+ },
+ _openClick: function(e, el, options) {
+ var midClick = options.midClick !== undefined ? options.midClick : $.magnificPopup.defaults.midClick;
+
+
+ if(!midClick && ( e.which === 2 || e.ctrlKey || e.metaKey || e.altKey || e.shiftKey ) ) {
+ return;
+ }
+
+ var disableOn = options.disableOn !== undefined ? options.disableOn : $.magnificPopup.defaults.disableOn;
+
+ if(disableOn) {
+ if($.isFunction(disableOn)) {
+ if( !disableOn.call(mfp) ) {
+ return true;
+ }
+ } else { // else it's number
+ if( _window.width() < disableOn ) {
+ return true;
+ }
+ }
+ }
+
+ if(e.type) {
+ e.preventDefault();
+
+ // This will prevent popup from closing if element is inside and popup is already opened
+ if(mfp.isOpen) {
+ e.stopPropagation();
+ }
+ }
+
+ options.el = $(e.mfpEl);
+ if(options.delegate) {
+ options.items = el.find(options.delegate);
+ }
+ mfp.open(options);
+ },
+
+
+ /**
+ * Updates text on preloader
+ */
+ updateStatus: function(status, text) {
+
+ if(mfp.preloader) {
+ if(_prevStatus !== status) {
+ mfp.container.removeClass('mfp-s-'+_prevStatus);
+ }
+
+ if(!text && status === 'loading') {
+ text = mfp.st.tLoading;
+ }
+
+ var data = {
+ status: status,
+ text: text
+ };
+ // allows to modify status
+ _mfpTrigger('UpdateStatus', data);
+
+ status = data.status;
+ text = data.text;
+
+ mfp.preloader.html(text);
+
+ mfp.preloader.find('a').on('click', function(e) {
+ e.stopImmediatePropagation();
+ });
+
+ mfp.container.addClass('mfp-s-'+status);
+ _prevStatus = status;
+ }
+ },
+
+
+ /*
+ "Private" helpers that aren't private at all
+ */
+ // Check to close popup or not
+ // "target" is an element that was clicked
+ _checkIfClose: function(target) {
+
+ if($(target).hasClass(PREVENT_CLOSE_CLASS)) {
+ return;
+ }
+
+ var closeOnContent = mfp.st.closeOnContentClick;
+ var closeOnBg = mfp.st.closeOnBgClick;
+
+ if(closeOnContent && closeOnBg) {
+ return true;
+ } else {
+
+ // We close the popup if click is on close button or on preloader. Or if there is no content.
+ if(!mfp.content || $(target).hasClass('mfp-close') || (mfp.preloader && target === mfp.preloader[0]) ) {
+ return true;
+ }
+
+ // if click is outside the content
+ if( (target !== mfp.content[0] && !$.contains(mfp.content[0], target)) ) {
+ if(closeOnBg) {
+ // last check, if the clicked element is in DOM, (in case it's removed onclick)
+ if( $.contains(document, target) ) {
+ return true;
+ }
+ }
+ } else if(closeOnContent) {
+ return true;
+ }
+
+ }
+ return false;
+ },
+ _addClassToMFP: function(cName) {
+ mfp.bgOverlay.addClass(cName);
+ mfp.wrap.addClass(cName);
+ },
+ _removeClassFromMFP: function(cName) {
+ this.bgOverlay.removeClass(cName);
+ mfp.wrap.removeClass(cName);
+ },
+ _hasScrollBar: function(winHeight) {
+ return ( (mfp.isIE7 ? _document.height() : document.body.scrollHeight) > (winHeight || _window.height()) );
+ },
+ _setFocus: function() {
+ (mfp.st.focus ? mfp.content.find(mfp.st.focus).eq(0) : mfp.wrap).focus();
+ },
+ _onFocusIn: function(e) {
+ if( e.target !== mfp.wrap[0] && !$.contains(mfp.wrap[0], e.target) ) {
+ mfp._setFocus();
+ return false;
+ }
+ },
+ _parseMarkup: function(template, values, item) {
+ var arr;
+ if(item.data) {
+ values = $.extend(item.data, values);
+ }
+ _mfpTrigger(MARKUP_PARSE_EVENT, [template, values, item] );
+
+ $.each(values, function(key, value) {
+ if(value === undefined || value === false) {
+ return true;
+ }
+ arr = key.split('_');
+ if(arr.length > 1) {
+ var el = template.find(EVENT_NS + '-'+arr[0]);
+
+ if(el.length > 0) {
+ var attr = arr[1];
+ if(attr === 'replaceWith') {
+ if(el[0] !== value[0]) {
+ el.replaceWith(value);
+ }
+ } else if(attr === 'img') {
+ if(el.is('img')) {
+ el.attr('src', value);
+ } else {
+ el.replaceWith( $('').attr('src', value).attr('class', el.attr('class')) );
+ }
+ } else {
+ el.attr(arr[1], value);
+ }
+ }
+
+ } else {
+ template.find(EVENT_NS + '-'+key).html(value);
+ }
+ });
+ },
+
+ _getScrollbarSize: function() {
+ // thx David
+ if(mfp.scrollbarSize === undefined) {
+ var scrollDiv = document.createElement("div");
+ scrollDiv.style.cssText = 'width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;';
+ document.body.appendChild(scrollDiv);
+ mfp.scrollbarSize = scrollDiv.offsetWidth - scrollDiv.clientWidth;
+ document.body.removeChild(scrollDiv);
+ }
+ return mfp.scrollbarSize;
+ }
+
+ }; /* MagnificPopup core prototype end */
+
+
+
+
+ /**
+ * Public static functions
+ */
+ $.magnificPopup = {
+ instance: null,
+ proto: MagnificPopup.prototype,
+ modules: [],
+
+ open: function(options, index) {
+ _checkInstance();
+
+ if(!options) {
+ options = {};
+ } else {
+ options = $.extend(true, {}, options);
+ }
+
+ options.isObj = true;
+ options.index = index || 0;
+ return this.instance.open(options);
+ },
+
+ close: function() {
+ return $.magnificPopup.instance && $.magnificPopup.instance.close();
+ },
+
+ registerModule: function(name, module) {
+ if(module.options) {
+ $.magnificPopup.defaults[name] = module.options;
+ }
+ $.extend(this.proto, module.proto);
+ this.modules.push(name);
+ },
+
+ defaults: {
+
+ // Info about options is in docs:
+ // http://dimsemenov.com/plugins/magnific-popup/documentation.html#options
+
+ disableOn: 0,
+
+ key: null,
+
+ midClick: false,
+
+ mainClass: '',
+
+ preloader: true,
+
+ focus: '', // CSS selector of input to focus after popup is opened
+
+ closeOnContentClick: false,
+
+ closeOnBgClick: true,
+
+ closeBtnInside: true,
+
+ showCloseBtn: true,
+
+ enableEscapeKey: true,
+
+ modal: false,
+
+ alignTop: false,
+
+ removalDelay: 0,
+
+ prependTo: null,
+
+ fixedContentPos: 'auto',
+
+ fixedBgPos: 'auto',
+
+ overflowY: 'auto',
+
+ closeMarkup: '',
+
+ tClose: 'Close (Esc)',
+
+ tLoading: 'Loading...',
+
+ autoFocusLast: true
+
+ }
+ };
+
+
+
+ $.fn.magnificPopup = function(options) {
+ _checkInstance();
+
+ var jqEl = $(this);
+
+ // We call some API method of first param is a string
+ if (typeof options === "string" ) {
+
+ if(options === 'open') {
+ var items,
+ itemOpts = _isJQ ? jqEl.data('magnificPopup') : jqEl[0].magnificPopup,
+ index = parseInt(arguments[1], 10) || 0;
+
+ if(itemOpts.items) {
+ items = itemOpts.items[index];
+ } else {
+ items = jqEl;
+ if(itemOpts.delegate) {
+ items = items.find(itemOpts.delegate);
+ }
+ items = items.eq( index );
+ }
+ mfp._openClick({mfpEl:items}, jqEl, itemOpts);
+ } else {
+ if(mfp.isOpen)
+ mfp[options].apply(mfp, Array.prototype.slice.call(arguments, 1));
+ }
+
+ } else {
+ // clone options obj
+ options = $.extend(true, {}, options);
+
+ /*
+ * As Zepto doesn't support .data() method for objects
+ * and it works only in normal browsers
+ * we assign "options" object directly to the DOM element. FTW!
+ */
+ if(_isJQ) {
+ jqEl.data('magnificPopup', options);
+ } else {
+ jqEl[0].magnificPopup = options;
+ }
+
+ mfp.addGroup(jqEl, options);
+
+ }
+ return jqEl;
+ };
+
+ /*>>core*/
+
+ /*>>inline*/
+
+ var INLINE_NS = 'inline',
+ _hiddenClass,
+ _inlinePlaceholder,
+ _lastInlineElement,
+ _putInlineElementsBack = function() {
+ if(_lastInlineElement) {
+ _inlinePlaceholder.after( _lastInlineElement.addClass(_hiddenClass) ).detach();
+ _lastInlineElement = null;
+ }
+ };
+
+ $.magnificPopup.registerModule(INLINE_NS, {
+ options: {
+ hiddenClass: 'hide', // will be appended with `mfp-` prefix
+ markup: '',
+ tNotFound: 'Content not found'
+ },
+ proto: {
+
+ initInline: function() {
+ mfp.types.push(INLINE_NS);
+
+ _mfpOn(CLOSE_EVENT+'.'+INLINE_NS, function() {
+ _putInlineElementsBack();
+ });
+ },
+
+ getInline: function(item, template) {
+
+ _putInlineElementsBack();
+
+ if(item.src) {
+ var inlineSt = mfp.st.inline,
+ el = $(item.src);
+
+ if(el.length) {
+
+ // If target element has parent - we replace it with placeholder and put it back after popup is closed
+ var parent = el[0].parentNode;
+ if(parent && parent.tagName) {
+ if(!_inlinePlaceholder) {
+ _hiddenClass = inlineSt.hiddenClass;
+ _inlinePlaceholder = _getEl(_hiddenClass);
+ _hiddenClass = 'mfp-'+_hiddenClass;
+ }
+ // replace target inline element with placeholder
+ _lastInlineElement = el.after(_inlinePlaceholder).detach().removeClass(_hiddenClass);
+ }
+
+ mfp.updateStatus('ready');
+ } else {
+ mfp.updateStatus('error', inlineSt.tNotFound);
+ el = $('