CobbleBashScreen

CobbleBashScreen

将训练模拟器交互替换为紧凑的科技主题界面

CobbleBash Screen

CobbleBash Screen 是 CobbleBash 的一个 NeoForge 附加组件。它用一个紧凑的、科技主题的界面取代了训练模拟器的交互,而不替换 CobbleBash 的类、注册项或资源。

功能

  • 为全部 18 个道馆和四天王提供独立的标签页
  • 同时显示九个道馆卡片,支持平滑连续滚动
  • 使用原始的 CobbleBash 训练光盘实现每位玩家的永久挑战解锁
  • 独立的解锁和挑战确认交互
  • 四天王的访问权仍然锁定在完成全部 18 个道馆之后
  • 每个道馆的成功通关次数和总挑战开始次数
  • 由 NeoForge 数据附件支持的持久化玩家进度
  • Cobblemon GUI 点击和 PC 解锁音效
  • 英文和简体中文界面翻译,包括 CobbleBash 的简体中文翻译

需求

  • 兼容的 Minecraft 和 NeoForge 安装
  • CobbleBash
  • CobbleBash 自身的必需依赖

开发构建期望 build.gradle 中声明的本地 CobbleBash 依赖和其他依赖 jar。

集成 API

其他服务端模组可以通过 TrainingSimulatorApi 解锁挑战而无需消耗光盘:

TrainingSimulatorApi.unlockGym(player, GymType.FIRE);
TrainingSimulatorApi.unlockAllGyms(player);

if (TrainingSimulatorApi.isEliteFourAvailable(player)) { TrainingSimulatorApi.unlockEliteFour(player); }

unlockEliteFour 始终保留 CobbleBash 的进度顺序,并且直到玩家完成全部 18 个道馆之前返回 false。

同一个 API 暴露了服务端安全的进度查询,无需访问附件或 NBT:

int clears = TrainingSimulatorApi.getGymClearCount(player, GymType.FIRE);
boolean completed = TrainingSimulatorApi.hasClearedGym(player, GymType.FIRE);
int uniqueGyms = TrainingSimulatorApi.getClearedGymCount(player);
int started = TrainingSimulatorApi.getChallengesStarted(player);

其他模组可以在 NeoForge.EVENT_BUS 上订阅这些事件:

  • TrainingSimulatorOpenEvent.Pre,可在界面打开前取消
  • TrainingSimulatorChallengeStartedEvent.Post
  • TrainingSimulatorGymClearedEvent.Post
  • TrainingSimulatorEliteFourCompletedEvent.Post

兼容性设计

该附加组件通过 NeoForge 的方块交互事件打开其菜单,并调用 CobbleBash 的公共 GymCommand 入口方法。一个范围狭窄的 Mixin 观察 CobbleBash 私有道馆完成方法的成功返回,以便 UI 可以记录重复通关次数;它不会取消或改变 CobbleBash 的行为。

玩家 UI 进度存储在每位玩家可序列化的 cobblebash_screen:training_simulator NeoForge 附件中。该附件在玩家死亡重生时会被复制。界面值保持服务端权威,并通过菜单同步,而不是将附件暴露给客户端。

该附加组件拥有 cobblebash_screen 注册表命名空间。其 assets/cobblebash 资源仅提供 CobbleBash 缺失的简体中文翻译,不会替换 CobbleBash 的注册项或游戏数据。