Anno 1800 Mod Loader实用指南掌握XML智能合并与游戏模组开发【免费下载链接】anno1800-mod-loaderThe one and only mod loader for Anno 1800, supports loading of unpacked RDA files, XML merging and Python mods.项目地址: https://gitcode.com/gh_mirrors/an/anno1800-mod-loader从传统模组管理到现代XML操作为什么Anno 1800 Mod Loader是游戏模组开发的革命性工具在《纪元1800》的游戏模组开发领域传统的模组管理方式往往需要玩家手动解包游戏资源文件、修改原始XML文档并重新打包这个过程不仅繁琐而且容易出错。Anno 1800 Mod Loader的出现彻底改变了这一现状它通过创新的XML智能合并技术为模组开发者提供了前所未有的灵活性和效率。这个开源工具支持未打包RDA文件加载、基于XPath的精确XML操作以及Python模组运行环境让游戏定制变得更加简单和可靠。核心问题传统模组开发的痛点与挑战传统《纪元1800》模组开发面临几个关键挑战首先是文件大小限制大型XML文件需要完整替换其次是版本兼容性问题游戏更新后模组经常失效第三是开发复杂性需要深入了解游戏文件结构最后是调试困难缺乏有效的测试工具。Anno 1800 Mod Loader针对这些问题提供了系统性解决方案。模块化开发理解Mod Loader的核心架构XML操作引擎libs/xml-operations模块该模块位于项目的libs/xml-operations/目录是实现XML智能合并的核心。它定义了六种基础操作类型Merge操作- 合并节点属性或子节点内容Remove操作- 删除指定的XML节点Add操作- 在选定节点内部添加新内容Replace操作- 替换整个节点及其内容AddNextSibling操作- 在选定节点后添加同级节点AddPrevSibling操作- 在选定节点前添加同级节点每个操作都通过XPath表达式精确定位目标节点确保修改的精确性和可预测性。文件加载系统libs/external-file-loader模块这个模块负责高效加载未打包的RDA游戏文件支持直接从磁盘读取原始游戏资源。它实现了智能缓存机制和文件路径解析确保模组文件能够正确覆盖游戏原始文件。Python集成层libs/python35模块通过替换游戏的python35.dll文件该模块为模组开发者提供了Python脚本执行环境支持运行自定义游戏逻辑和扩展功能。实践入门创建你的第一个游戏模组环境配置与工具准备在开始模组开发前需要完成以下准备工作获取源代码使用Git克隆项目仓库git clone https://gitcode.com/gh_mirrors/an/anno1800-mod-loader开发环境搭建安装Visual Studio 2022社区版即可安装Bazel构建工具推荐使用Bazelisk配置C开发环境构建项目bazel build //libs/python35:python35.dll基础模组结构设计一个标准的Anno 1800模组需要遵循特定的目录结构。以下是创建增强缩放模组的具体步骤创建模组根目录在游戏安装目录的mods文件夹下创建新文件夹重建游戏文件路径按照游戏原始路径结构创建子目录编写XML补丁文件在对应位置创建修改文件例如要修改游戏相机设置需要创建以下结构mods/enhanced-zoom-mod/ └── data/ └── config/ └── game/ └── camera.xmlXML补丁编写基础XML补丁文件使用特定的语法结构。以下是一个完整的相机缩放扩展示例ModOps !-- 修改现有缩放预设 -- ModOp Typemerge Path/Normal/Presets/Preset[ID0] Preset ID0 Height15 Pitch0.875 MinPitch-0.375 MaxPitch1.40 Fov0.65/ /ModOp !-- 添加新的缩放级别 -- ModOp Typeadd Path/Normal/Presets Preset ID11 Height90 Pitch0.875 MinPitch-0.375 MaxPitch1.40 Fov0.50 / Preset ID12 Height120 Pitch0.875 MinPitch-0.375 MaxPitch1.40 Fov0.48 / Preset ID13 Height150 Pitch0.875 MinPitch-0.375 MaxPitch1.40 Fov0.46 / /ModOp !-- 更新最大缩放预设值 -- ModOp Typemerge Path/Normal/Settings Settings MaxZoomPreset13/Settings /ModOp /ModOps高级技巧提升模组开发效率XPath表达式优化XPath是XML文档导航的语言在Anno 1800 Mod Loader中正确使用XPath可以显著提升模组性能和可维护性。基础选择器示例!-- 选择所有名为Building的节点 -- ModOp Path//Building !-- 选择具有特定属性的节点 -- ModOp Path/Assets/Asset[GUID1001] !-- 选择特定路径下的节点 -- ModOp Path/Config/Game/Settings/Graphics性能优化技巧尽量使用绝对路径而非相对路径避免使用//全局搜索除非必要利用GUID参数加速资产查找GUID参数的高级应用对于assets.xml等包含大量游戏资产的XML文件使用GUID参数可以大幅提升操作效率!-- 传统方式性能较差 -- ModOp Typereplace Path//Asset[Values/Standard/GUID1137]/Values/Standard/Name Name新建筑名称/Name /ModOp !-- 优化方式使用GUID参数 -- ModOp Typereplace GUID1137 Path/Values/Standard/Name Name新建筑名称/Name /ModOpGUID参数会自动将搜索范围限定在指定GUID的Asset节点内避免了全文档搜索的开销。模块化开发拆分大型XML补丁当模组包含大量修改时可以将XML补丁拆分成多个文件提高可维护性主补丁文件main.xmlModOps !-- 基础修改 -- ModOp Typemerge Path/GameSettings GameSettings DifficultyNormal/ /ModOp !-- 包含其他补丁文件 -- Include Filebuilding-changes.include.xml / Include Fileresource-tweaks.include.xml / Include Fileui-improvements.include.xml / !-- 最终调整 -- ModOp Typeadd Path/FinalTweaks Tweak Valueoptimized/ /ModOp /ModOps包含文件命名规范使用.include.xml扩展名避免被误认为游戏文件文件路径相对于包含它的XML文件支持嵌套包含但需注意循环引用测试与调试确保模组质量使用xml-test工具验证补丁Anno 1800 Mod Loader提供了专门的测试工具来验证XML补丁的正确性# 基本测试语法 xml-test original_game_file.xml your_patch.xml # 实际应用示例 xml-test data/config/game/camera.xml mods/my-mod/camera.xml测试工具会生成patched.xml文件显示应用补丁后的结果。你可以使用diff工具比较原始文件和修改后的文件确保修改符合预期。调试日志分析模组加载器会在游戏日志目录生成详细的调试信息位置Anno 1800/logs/mod-loader.log包含内容加载的模组列表、XML操作结果、错误和警告信息常见日志信息解析[INFO] 加载模组: enhanced-zoom-mod [SUCCESS] 成功应用XML补丁: camera.xml (5个操作) [WARNING] 路径未找到: /NonExistent/Path (跳过操作) [ERROR] XML语法错误: 第15行未闭合的标签性能监控与优化大型模组可能影响游戏性能建议采取以下优化措施减少XML操作数量合并相似操作优化XPath表达式避免复杂的选择器使用GUID参数加速资产查找分批加载将大型模组拆分成逻辑模块实战案例创建复杂的游戏机制模组案例1自定义建筑模组假设我们要创建一个新的工业建筑模组需要修改多个游戏文件资产定义文件assets.xml补丁ModOps !-- 添加新建筑资产 -- ModOp Typeadd GUID1001 Path/Asset/Values/Standard Asset Values Standard GUID1001/GUID Name高级工厂/Name IconFilenamedata/ui/2kimages/main/3dicons/icon_advanced_factory.png/IconFilename /Standard Factory Productivity150/Productivity ElectricityConsumption25/ElectricityConsumption /Factory /Values /Asset /ModOp !-- 修改生产链 -- ModOp Typemerge GUID500 Path/Values/Factory/Production/Item Item Product2001/Product Amount2/Amount ProductionTime30/ProductionTime /Item /ModOp /ModOps本地化文件补丁ModOps ModOp Typeadd Path/TextExport/Texts/Text[GUID1001] Text GUID1001/GUID Text高级工厂/Text Description生产效率提高50%的新型工业建筑/Description /Text /ModOp /ModOps案例2游戏平衡调整模组调整游戏经济平衡的模组示例ModOps !-- 调整居民需求 -- ModOp Typemerge Path/Population/PopulationType[NameWorkers]/Needs/Need[Product100] Need Product100/Product Amount0.8/Amount Luxuryfalse/Luxury /Need /ModOp !-- 修改建筑维护成本 -- ModOp Typemerge Path/Buildings/Building[NameResidence]/Maintenance Maintenance Money150/Money Influence5/Influence /Maintenance /ModOp !-- 调整贸易价格 -- ModOp Typereplace Path/Trading/Goods/Good[ID200]/Price Price Base250/Base Min180/Min Max320/Max /Price /ModOp /ModOps最佳实践与故障排除模组开发工作流程规划阶段明确模组目标设计XML修改方案开发阶段创建补丁文件使用xml-test验证测试阶段在游戏中测试模组功能优化阶段根据性能分析调整实现发布阶段整理文档创建发布包常见问题解决方案问题1模组加载但未生效检查XML语法是否正确验证文件路径是否匹配游戏原始结构查看mod-loader.log中的错误信息问题2游戏崩溃或无法启动暂时禁用所有模组逐个启用测试检查XML补丁中的路径是否存在确保没有语法错误或未闭合标签问题3性能下降明显减少XPath中的全局搜索//合并多个相似操作使用GUID参数优化资产查找问题4模组冲突检查是否有多个模组修改同一文件调整模组加载顺序按文件夹名称字母顺序使用数字前缀控制加载优先级01-base-mod、02-enhancements、03-ui-changes版本兼容性管理游戏更新可能破坏现有模组建议采取以下策略模块化设计将不同功能拆分成独立模块版本检测在模组说明中注明兼容的游戏版本快速响应游戏更新后及时测试和更新模组社区协作参与模组开发者社区共享解决方案进阶开发探索Python模组可能性虽然Anno 1800 Mod Loader主要专注于XML操作但它也为Python模组提供了基础支持。通过替换python35.dll文件开发者可以运行自定义Python脚本实现更复杂的游戏逻辑修改。Python模组开发基础环境准备确保Python 3.5兼容性脚本位置将Python脚本放置在mods目录的适当位置游戏API访问研究游戏内置的Python接口调试技巧使用日志输出和错误捕获集成XML与Python结合XML补丁和Python脚本可以创建功能更强大的模组# 示例动态调整游戏参数 import anno1800_api def adjust_game_balance(): # 读取当前游戏状态 game_state anno1800_api.get_game_state() # 根据条件动态调整 if game_state[difficulty] Hard: # 应用更严格的平衡设置 apply_hard_mode_tweaks() else: # 应用普通平衡设置 apply_normal_tweaks() def apply_hard_mode_tweaks(): # 通过XML操作修改游戏参数 # 这里可以调用XML补丁应用函数 pass总结与展望Anno 1800 Mod Loader为《纪元1800》模组开发带来了革命性的变化。通过XML智能合并技术开发者可以精确修改游戏内容而无需处理庞大的原始文件。XPath表达式的灵活使用、GUID参数的性能优化、模块化的补丁设计这些特性共同构成了一个强大而高效的模组开发框架。核心价值总结精确性基于XPath的定位确保修改的准确性性能优化的XML处理引擎减少游戏加载时间可维护性模块化设计便于更新和维护兼容性智能合并减少版本更新时的冲突扩展性支持Python脚本和高级游戏修改未来发展展望随着游戏模组社区的发展Anno 1800 Mod Loader可能会在以下方向继续演进可视化编辑器提供图形界面简化XML补丁创建模组管理器集成模组管理、冲突检测和自动更新高级调试工具更强大的测试和性能分析功能社区模组库集中化的模组分享和评级系统无论你是刚开始接触游戏模组开发的新手还是经验丰富的模组创作者Anno 1800 Mod Loader都提供了强大的工具和灵活的框架。通过掌握本文介绍的技术和最佳实践你将能够创建出高质量、高性能的游戏模组为《纪元1800》玩家社区贡献独特而有价值的游戏体验。记住模组开发不仅是技术实践更是创意表达。在遵循技术规范的同时不要限制你的想象力。从简单的界面调整开始逐步探索更复杂的游戏机制修改最终创造出真正改变游戏体验的精品模组。【免费下载链接】anno1800-mod-loaderThe one and only mod loader for Anno 1800, supports loading of unpacked RDA files, XML merging and Python mods.项目地址: https://gitcode.com/gh_mirrors/an/anno1800-mod-loader创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
Anno 1800 Mod Loader实用指南:掌握XML智能合并与游戏模组开发
发布时间:2026/6/1 8:13:10
Anno 1800 Mod Loader实用指南掌握XML智能合并与游戏模组开发【免费下载链接】anno1800-mod-loaderThe one and only mod loader for Anno 1800, supports loading of unpacked RDA files, XML merging and Python mods.项目地址: https://gitcode.com/gh_mirrors/an/anno1800-mod-loader从传统模组管理到现代XML操作为什么Anno 1800 Mod Loader是游戏模组开发的革命性工具在《纪元1800》的游戏模组开发领域传统的模组管理方式往往需要玩家手动解包游戏资源文件、修改原始XML文档并重新打包这个过程不仅繁琐而且容易出错。Anno 1800 Mod Loader的出现彻底改变了这一现状它通过创新的XML智能合并技术为模组开发者提供了前所未有的灵活性和效率。这个开源工具支持未打包RDA文件加载、基于XPath的精确XML操作以及Python模组运行环境让游戏定制变得更加简单和可靠。核心问题传统模组开发的痛点与挑战传统《纪元1800》模组开发面临几个关键挑战首先是文件大小限制大型XML文件需要完整替换其次是版本兼容性问题游戏更新后模组经常失效第三是开发复杂性需要深入了解游戏文件结构最后是调试困难缺乏有效的测试工具。Anno 1800 Mod Loader针对这些问题提供了系统性解决方案。模块化开发理解Mod Loader的核心架构XML操作引擎libs/xml-operations模块该模块位于项目的libs/xml-operations/目录是实现XML智能合并的核心。它定义了六种基础操作类型Merge操作- 合并节点属性或子节点内容Remove操作- 删除指定的XML节点Add操作- 在选定节点内部添加新内容Replace操作- 替换整个节点及其内容AddNextSibling操作- 在选定节点后添加同级节点AddPrevSibling操作- 在选定节点前添加同级节点每个操作都通过XPath表达式精确定位目标节点确保修改的精确性和可预测性。文件加载系统libs/external-file-loader模块这个模块负责高效加载未打包的RDA游戏文件支持直接从磁盘读取原始游戏资源。它实现了智能缓存机制和文件路径解析确保模组文件能够正确覆盖游戏原始文件。Python集成层libs/python35模块通过替换游戏的python35.dll文件该模块为模组开发者提供了Python脚本执行环境支持运行自定义游戏逻辑和扩展功能。实践入门创建你的第一个游戏模组环境配置与工具准备在开始模组开发前需要完成以下准备工作获取源代码使用Git克隆项目仓库git clone https://gitcode.com/gh_mirrors/an/anno1800-mod-loader开发环境搭建安装Visual Studio 2022社区版即可安装Bazel构建工具推荐使用Bazelisk配置C开发环境构建项目bazel build //libs/python35:python35.dll基础模组结构设计一个标准的Anno 1800模组需要遵循特定的目录结构。以下是创建增强缩放模组的具体步骤创建模组根目录在游戏安装目录的mods文件夹下创建新文件夹重建游戏文件路径按照游戏原始路径结构创建子目录编写XML补丁文件在对应位置创建修改文件例如要修改游戏相机设置需要创建以下结构mods/enhanced-zoom-mod/ └── data/ └── config/ └── game/ └── camera.xmlXML补丁编写基础XML补丁文件使用特定的语法结构。以下是一个完整的相机缩放扩展示例ModOps !-- 修改现有缩放预设 -- ModOp Typemerge Path/Normal/Presets/Preset[ID0] Preset ID0 Height15 Pitch0.875 MinPitch-0.375 MaxPitch1.40 Fov0.65/ /ModOp !-- 添加新的缩放级别 -- ModOp Typeadd Path/Normal/Presets Preset ID11 Height90 Pitch0.875 MinPitch-0.375 MaxPitch1.40 Fov0.50 / Preset ID12 Height120 Pitch0.875 MinPitch-0.375 MaxPitch1.40 Fov0.48 / Preset ID13 Height150 Pitch0.875 MinPitch-0.375 MaxPitch1.40 Fov0.46 / /ModOp !-- 更新最大缩放预设值 -- ModOp Typemerge Path/Normal/Settings Settings MaxZoomPreset13/Settings /ModOp /ModOps高级技巧提升模组开发效率XPath表达式优化XPath是XML文档导航的语言在Anno 1800 Mod Loader中正确使用XPath可以显著提升模组性能和可维护性。基础选择器示例!-- 选择所有名为Building的节点 -- ModOp Path//Building !-- 选择具有特定属性的节点 -- ModOp Path/Assets/Asset[GUID1001] !-- 选择特定路径下的节点 -- ModOp Path/Config/Game/Settings/Graphics性能优化技巧尽量使用绝对路径而非相对路径避免使用//全局搜索除非必要利用GUID参数加速资产查找GUID参数的高级应用对于assets.xml等包含大量游戏资产的XML文件使用GUID参数可以大幅提升操作效率!-- 传统方式性能较差 -- ModOp Typereplace Path//Asset[Values/Standard/GUID1137]/Values/Standard/Name Name新建筑名称/Name /ModOp !-- 优化方式使用GUID参数 -- ModOp Typereplace GUID1137 Path/Values/Standard/Name Name新建筑名称/Name /ModOpGUID参数会自动将搜索范围限定在指定GUID的Asset节点内避免了全文档搜索的开销。模块化开发拆分大型XML补丁当模组包含大量修改时可以将XML补丁拆分成多个文件提高可维护性主补丁文件main.xmlModOps !-- 基础修改 -- ModOp Typemerge Path/GameSettings GameSettings DifficultyNormal/ /ModOp !-- 包含其他补丁文件 -- Include Filebuilding-changes.include.xml / Include Fileresource-tweaks.include.xml / Include Fileui-improvements.include.xml / !-- 最终调整 -- ModOp Typeadd Path/FinalTweaks Tweak Valueoptimized/ /ModOp /ModOps包含文件命名规范使用.include.xml扩展名避免被误认为游戏文件文件路径相对于包含它的XML文件支持嵌套包含但需注意循环引用测试与调试确保模组质量使用xml-test工具验证补丁Anno 1800 Mod Loader提供了专门的测试工具来验证XML补丁的正确性# 基本测试语法 xml-test original_game_file.xml your_patch.xml # 实际应用示例 xml-test data/config/game/camera.xml mods/my-mod/camera.xml测试工具会生成patched.xml文件显示应用补丁后的结果。你可以使用diff工具比较原始文件和修改后的文件确保修改符合预期。调试日志分析模组加载器会在游戏日志目录生成详细的调试信息位置Anno 1800/logs/mod-loader.log包含内容加载的模组列表、XML操作结果、错误和警告信息常见日志信息解析[INFO] 加载模组: enhanced-zoom-mod [SUCCESS] 成功应用XML补丁: camera.xml (5个操作) [WARNING] 路径未找到: /NonExistent/Path (跳过操作) [ERROR] XML语法错误: 第15行未闭合的标签性能监控与优化大型模组可能影响游戏性能建议采取以下优化措施减少XML操作数量合并相似操作优化XPath表达式避免复杂的选择器使用GUID参数加速资产查找分批加载将大型模组拆分成逻辑模块实战案例创建复杂的游戏机制模组案例1自定义建筑模组假设我们要创建一个新的工业建筑模组需要修改多个游戏文件资产定义文件assets.xml补丁ModOps !-- 添加新建筑资产 -- ModOp Typeadd GUID1001 Path/Asset/Values/Standard Asset Values Standard GUID1001/GUID Name高级工厂/Name IconFilenamedata/ui/2kimages/main/3dicons/icon_advanced_factory.png/IconFilename /Standard Factory Productivity150/Productivity ElectricityConsumption25/ElectricityConsumption /Factory /Values /Asset /ModOp !-- 修改生产链 -- ModOp Typemerge GUID500 Path/Values/Factory/Production/Item Item Product2001/Product Amount2/Amount ProductionTime30/ProductionTime /Item /ModOp /ModOps本地化文件补丁ModOps ModOp Typeadd Path/TextExport/Texts/Text[GUID1001] Text GUID1001/GUID Text高级工厂/Text Description生产效率提高50%的新型工业建筑/Description /Text /ModOp /ModOps案例2游戏平衡调整模组调整游戏经济平衡的模组示例ModOps !-- 调整居民需求 -- ModOp Typemerge Path/Population/PopulationType[NameWorkers]/Needs/Need[Product100] Need Product100/Product Amount0.8/Amount Luxuryfalse/Luxury /Need /ModOp !-- 修改建筑维护成本 -- ModOp Typemerge Path/Buildings/Building[NameResidence]/Maintenance Maintenance Money150/Money Influence5/Influence /Maintenance /ModOp !-- 调整贸易价格 -- ModOp Typereplace Path/Trading/Goods/Good[ID200]/Price Price Base250/Base Min180/Min Max320/Max /Price /ModOp /ModOps最佳实践与故障排除模组开发工作流程规划阶段明确模组目标设计XML修改方案开发阶段创建补丁文件使用xml-test验证测试阶段在游戏中测试模组功能优化阶段根据性能分析调整实现发布阶段整理文档创建发布包常见问题解决方案问题1模组加载但未生效检查XML语法是否正确验证文件路径是否匹配游戏原始结构查看mod-loader.log中的错误信息问题2游戏崩溃或无法启动暂时禁用所有模组逐个启用测试检查XML补丁中的路径是否存在确保没有语法错误或未闭合标签问题3性能下降明显减少XPath中的全局搜索//合并多个相似操作使用GUID参数优化资产查找问题4模组冲突检查是否有多个模组修改同一文件调整模组加载顺序按文件夹名称字母顺序使用数字前缀控制加载优先级01-base-mod、02-enhancements、03-ui-changes版本兼容性管理游戏更新可能破坏现有模组建议采取以下策略模块化设计将不同功能拆分成独立模块版本检测在模组说明中注明兼容的游戏版本快速响应游戏更新后及时测试和更新模组社区协作参与模组开发者社区共享解决方案进阶开发探索Python模组可能性虽然Anno 1800 Mod Loader主要专注于XML操作但它也为Python模组提供了基础支持。通过替换python35.dll文件开发者可以运行自定义Python脚本实现更复杂的游戏逻辑修改。Python模组开发基础环境准备确保Python 3.5兼容性脚本位置将Python脚本放置在mods目录的适当位置游戏API访问研究游戏内置的Python接口调试技巧使用日志输出和错误捕获集成XML与Python结合XML补丁和Python脚本可以创建功能更强大的模组# 示例动态调整游戏参数 import anno1800_api def adjust_game_balance(): # 读取当前游戏状态 game_state anno1800_api.get_game_state() # 根据条件动态调整 if game_state[difficulty] Hard: # 应用更严格的平衡设置 apply_hard_mode_tweaks() else: # 应用普通平衡设置 apply_normal_tweaks() def apply_hard_mode_tweaks(): # 通过XML操作修改游戏参数 # 这里可以调用XML补丁应用函数 pass总结与展望Anno 1800 Mod Loader为《纪元1800》模组开发带来了革命性的变化。通过XML智能合并技术开发者可以精确修改游戏内容而无需处理庞大的原始文件。XPath表达式的灵活使用、GUID参数的性能优化、模块化的补丁设计这些特性共同构成了一个强大而高效的模组开发框架。核心价值总结精确性基于XPath的定位确保修改的准确性性能优化的XML处理引擎减少游戏加载时间可维护性模块化设计便于更新和维护兼容性智能合并减少版本更新时的冲突扩展性支持Python脚本和高级游戏修改未来发展展望随着游戏模组社区的发展Anno 1800 Mod Loader可能会在以下方向继续演进可视化编辑器提供图形界面简化XML补丁创建模组管理器集成模组管理、冲突检测和自动更新高级调试工具更强大的测试和性能分析功能社区模组库集中化的模组分享和评级系统无论你是刚开始接触游戏模组开发的新手还是经验丰富的模组创作者Anno 1800 Mod Loader都提供了强大的工具和灵活的框架。通过掌握本文介绍的技术和最佳实践你将能够创建出高质量、高性能的游戏模组为《纪元1800》玩家社区贡献独特而有价值的游戏体验。记住模组开发不仅是技术实践更是创意表达。在遵循技术规范的同时不要限制你的想象力。从简单的界面调整开始逐步探索更复杂的游戏机制修改最终创造出真正改变游戏体验的精品模组。【免费下载链接】anno1800-mod-loaderThe one and only mod loader for Anno 1800, supports loading of unpacked RDA files, XML merging and Python mods.项目地址: https://gitcode.com/gh_mirrors/an/anno1800-mod-loader创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考