JobsFabric

JobsFabric

这是一个综合性的服务器端职业系统,包含职业进阶、经济奖励和自定义职业功能,适用于Minecraft 1.20.1。

JobsFabric - Minecraft Fabric 模组

一套全面的服务端职业系统,具备成长、经济奖励和可自定义任务,适用于 Minecraft 1.20.1 Fabric 服务器。

Minecraft Fabric Java License

🌟 特性

  • 多职业系统: 玩家可同时拥有最多 3 个活跃职业。
  • 渐进式等级: 基于自定义公式的成长系统,需求可配置。
  • 经济集成: 集成 Impactor Economy 模组,发放金币奖励。
  • 反作弊保护: 防止刷玩家放置的方块和滥用骨粉。
  • 模组内容支持: 完全兼容模组中的方块和物品。
  • 自动检测: 服务器启动时自动检测所有矿石、作物和方块。
  • 仅服务端: 不需要客户端模组,原版客户端即可运行。
  • 可自定义职业: 基于 JSON 的配置,方便创建和修改职业。
  • 交互式 GUI: 服务端 GUI 菜单,用于职业管理和进度追踪。

📋 可用职业

第一阶段 (已实现)

  • ⛏️ 矿工: 挖掘矿石和石头以升级
  • 🌾 农夫: 收获作物和植物
  • 🏗️ 建筑师: 放置方块以获得进度

第二阶段 (计划中)

超过 17 个额外职业,包括战士、渔夫、猎人、驯兽师等等!

🔧 依赖项

  • Impactor Economy: 5.3.0+ (用于经济奖励)

已内置 (模组已包含)

  • SgUi: 1.2.2+1.20 (用于服务端 GUI) - 无需单独安装

注意: 这些库已内置以便使用。如果与其他使用这些库的模组发生冲突,请在 GitHub 上报告问题。

可选

  • LuckPerms: 用于基于权限的功能 (计划中)

📥 安装

  1. 下载最新发布版本: JobsFabric-0.1-1.20.1.jar
  2. 将其放入服务器的 mods/ 文件夹
  3. 安装必需的依赖项:
    • Fabric API (0.92.6+1.20.1)
    • Impactor Economy (5.3.0+)
  4. 启动你的服务器
  5. 在 config/jobs/ 中配置职业

⚙️ 配置

配置文件位于 config/jobs/:

主配置文件 (config.json)

{
  "jobs": {
    "maxActiveJobs": 3,
    "leaveCooldownMinutes": 15,
    "saveProgressOnLeave": true
  },
  "storage": {
    "autoSaveIntervalSeconds": 180
  },
  "autoDetection": {
    "enabled": true,
    "defaultOreProgress": 1.0,
    "defaultCropProgress": 1.0,
    "defaultBlockProgress": 1.0
  }
}

自动检测设置:

  • enabled: 启动时自动扫描注册表以查找矿石/作物/方块
  • defaultOreProgress: 自动检测到的矿石的默认进度值
  • defaultCropProgress: 自动检测到的作物的默认进度值
  • defaultBlockProgress: 自动检测到的可放置方块的默认进度值

注意: 手动配置条目始终会覆盖自动检测的值!

职业定义 (jobs/*.json)

每个职业都有自己的 JSON 配置文件,包含:

  • 进度公式: 自定义数学表达式 (例如 100 * (level^2))
  • 动作类型: break, harvest, place 等。
  • 特殊进度: 特定材质的倍率
  • 奖励: 每级的经济奖励
  • GUI 配置: 自定义图标和描述

示例职业结构:

{
  "id": "miner",
  "name": "&6&lMiner",
  "progressFormula": "100 * (level^2)",
  "actionType": "break",
  "xpReward": 0,
  "xpRewardFormula": "",
  "specialProgress": {
    "_ore": 5.0,
    "stone": 1.0
  }
}

🎮 使用说明

玩家指令

  • /jobs - 打开职业菜单 (GUI)
  • 在 GUI 中点击加入职业
  • 查看进度和统计数据
  • 离开职业,进度得以保留

管理员指令

(即将在第二阶段推出)

🚀 性能优化

本模组包含多项性能增强:

  • 公式缓存: 减少 50-80% 的数学计算
  • 内存管理: 每 5 分钟自动清理追踪数据
  • 脏数据追踪: 仅保存已修改的玩家数据
  • 异步操作: 经济交易异步运行
  • 基于时间的过期: 旧条目 10 分钟后自动过期

有关详细分析,请参阅 OPTIMIZATION_REPORT.md。

🔒 反作弊特性

  • 方块放置追踪: 玩家放置的方块不会提供挖掘进度
  • 骨粉冷却: 1 秒冷却防止刷骨粉
  • 时间戳追踪: 自动清理防止内存泄漏
  • 验证系统: 动作类型白名单防止无效进度

🧩 模组内容支持

本模组完全支持模组中的方块和物品:

  • 使用完整的资源标识符 (例如 modname:copper_ore)
  • 支持通配符 (例如 _ore 匹配所有矿石)
  • 自动兼容任何模组
  • 无需额外配置

详情请参阅 MODDED_CONTENT_SUPPORT.md。

🏗️ 开发

从源码构建

# 克隆仓库
git clone https://github.com/Toastie0/Jobs.git
cd Jobs

# 使用 Gradle 构建
./gradlew build

# 输出: build/libs/JobsFabric-0.1-1.20.1.jar

项目结构

src/main/java/net/advancedjobs/
├── AdvancedJobsMod.java          # 模组主入口点
├── config/
│   └── ConfigManager.java         # 配置加载器
├── controller/
│   └── JobController.java         # 核心职业逻辑
├── economy/
│   └── ImpactorEconomyHandler.java
├── gui/
│   ├── JobListMenu.java           # 主要职业 GUI
│   └── JobProgressMenu.java       # 职业详情 GUI
├── handlers/
│   ├── BlockBreakHandler.java     # 矿工职业
│   ├── CropHarvestHandler.java    # 农夫职业
│   └── BlockPlaceHandler.java     # 建筑师职业
├── objects/
│   ├── Job.java                   # 职业数据模型
│   ├── User.java                  # 玩家数据模型
│   └── UserJobInfo.java           # 职业进度数据
└── storage/
    └── JsonStorageManager.java    # JSON 持久化

技术栈

  • 语言: Java 21
  • 构建工具: Gradle 8.8
  • 模组加载器: Fabric
  • GUI 库: SgUi (服务端)
  • 经济: Impactor API
  • 存储: 带脏数据追踪的 JSON

📊 路线图

第一阶段:核心系统 ✅

  • 职业框架
  • 进度追踪
  • 经济集成
  • 基础职业 (矿工、农夫、建筑师)
  • 反作弊系统
  • 性能优化

第二阶段:扩展 🚧

  • 超过 17 个额外职业
  • 职业专属成就
  • 排行榜
  • 加成和倍率
  • 权限集成

第三阶段:高级功能 📋

  • 自定义职业创建 GUI
  • 职业奖励 (物品、指令)
  • 职业任务/里程碑
  • 统计仪表盘
  • 开发者 API

🤝 贡献

欢迎贡献!请随时提交拉取请求或为错误和功能请求开启议题。

📄 许可证

本项目采用 CC0 1.0 通用 (公共领域) 许可证 - 详情请参阅 LICENSE 文件。

这意味着你可以自由使用、修改和分发此模组,无需任何限制或署名要求。

👤 作者

Toastie

🙏 致谢

  • Fabric 团队: 感谢优秀的模组框架
  • Impactor: 感谢经济 API
  • SgUi: 感谢服务端 GUI 功能
  • Minecraft 模组社区: 感谢资源和帮助

📞 支持

如有问题、疑问或建议:


注意: 此模组仅为服务端。运行原版 Minecraft 客户端的玩家无需安装任何内容即可加入并使用所有功能。