层级塔

层级塔

一种深奥且基于数据的装饰品升级系统。

装饰

Tier Tower Logo

一个数据驱动的装饰性等级系统。


Tier Tower 添加了聊天徽章和名牌装饰,玩家可以通过献祭物品来解锁。还添加了几种新的装饰方块。

  • 将物品丢入 Vortex 以献祭它们并获得 eminence。(EMI 集成会显示有效物品。)
  • 跳入 Vortex 以献祭当前 eminence 来进行 prestige,从而加速未来的升级。
  • Vortex 默认无法合成,因为服务器可能希望将其限制在特定区域。
  • Obelisk 显示的偏移量可以通过在方块正面的顶部、底部或侧面使用 Obelisk 物品来设置。

带有 echo 名牌的 Slimeist


数据包格式

概述

Tier Tower 基于等级序列,其进度由自定义数学公式决定。

序列 tier_tower:main 是特殊的,因为玩家将从该序列的等级 0 开始。 其他序列可以通过命令或序列进度创建并分配给玩家。

Prestige 系统

玩家根据序列 JSON 中定义的 prestige_value_function 获得每个序列的 prestige 点数。 当玩家进行 prestige 时,其 prestige 点数会增加此值。 然后使用 prestige_multiplier_function 重新计算 prestige 倍率,这会影响未来的升级成本。

序列格式

// data/tier_tower/tier_tower/sequence/main.json
{
  // 如果第一个等级未指定基础升级成本,则改用此值
  "default_base_leveling_cost": 1,

  /*
  prestige 值函数决定进行 prestige 时获得的增量 prestige 点数。
  可用变量:
  - points:当前序列中的总点数
  - tier:当前等级的(从 0 开始的)索引
  - level:当前等级内当前级别的(从 0 开始的)索引
  - level_points:当前级别内的点数
  */
  "prestige_value_function": "(points - 5000.0)",

  /*
  prestige 倍率函数决定升级期间应用的最大倍率。
  每个物品的实际倍率将是 1.0 与此值之间的随机值。
  可用变量:
  - prestige_points:当前序列中累计的 prestige 点数
  */
  "prestige_multiplier_function": "min(8.0, (1.0 + (prestige_points / 5000.0)))",

  // 必须按顺序推进的等级
  "tiers": [
    "minecraft:copper",
    /* ... */
    "minecraft:netherite"
  ],

  // 完成此序列后可选切换到下一个序列
  "next_sequence": "tier_tower:example"
}

等级格式

// data/minecraft/tier_tower/tier/netherite.json
{
  // 此等级中必须完成的级别数量,以达到下一等级
  "level_count": 10,

  /*
  此等级中级别索引 0 的升级成本。
  可用变量:
  - prev:前一个等级中最高级别之后一个级别的假设升级成本,如果这是第一个等级,则为 `default_base_leveling_cost`
  */
  "base_leveling_cost": "(prev * 0.75)",
  
  /*
  此等级中剩余级别的升级成本。
  可用变量:
  - levels:`level_count` 的值,为方便提供
  - base:`base_leveling_cost` 的计算值
  - prev:此等级中前一个级别的升级成本
  - level:正在计算成本的级别索引
  */
  "leveling_cost_function": "((((5.0 * level) + 610.0) * 32.0) + base)",

  // 可选:在此等级期间,eminence 点数会随时间流失(用于制作“无限”的最高等级)
  "erosion_rate": {
    // 每个间隔损失的 eminence 点数
    "loss": 1,
    // 每次侵蚀事件之间的刻数
    "interval": 20,
  },
}

表达式语言

公式可以使用标准数学运算符(+、-、*、/、^)、用于分组的括号以及以下函数编写:

  • min(a, b, ...):返回参数中的最小值
  • max(a, b, ...):返回参数中的最大值
  • sqrt(x):返回 x 的平方根
  • log(x):返回 x 的自然对数
  • exp(x):返回 e 的 x 次幂
  • e():返回 e 的值(2.71828...)
  • pow(x, y):返回 x 的 y 次幂
  • abs(x):返回 x 的绝对值
  • floor(x):返回小于或等于 x 的最大整数
  • ceil(x):返回大于或等于 x 的最小整数
  • round(x):返回最接近 x 的整数
  • pi():返回 π 的值(3.14159...)
  • sin(x)、cos(x)、tan(x):三角函数(x 以弧度为单位)

资源包格式

除了数据包条目外,还必须提供若干纹理。 我们将以等级 minecraft:copper 为例说明路径。

徽章纹理

assets/minecraft/textures/tier_tower/badge/copper.png 提供聊天徽章。

// assets/minecraft/textures/tier_tower/badge/copper.png.mcmeta
{
  "tier_tower:chat_badge": {
    // 用于徽章上等级编号的颜色
    "text_color": {
      "r": 236,
      "g": 221,
      "b": 255
    }
  }
}

边框纹理

assets/minecraft/textures/tier_tower/frame/copper.png 提供名牌边框。 它由三个 16x16 部分组成,分别水平对齐到名牌的左侧、中心和右侧。

Obelisk 纹理

assets/minecraft/textures/tier_tower/obelisk/copper.png 提供 Obelisk 的轮廓纹理。

塔纹理

assets/minecraft/textures/tier_tower/tower/copper.png 提供用于 Obelisk 进度显示的塔切片纹理。


许可证

Tier Tower 根据 LGPL-3.0 许可证授权。有关更多详细信息,请参阅 LICENSE.LESSER。

图标中使用了 Kiwi Soda 字体的修改版本。

在 MIT 许可证下使用了 Create 创造模式物品栏和虚拟流体代码的部分内容。

鸣谢

  • 代码由 Slimeist 编写
  • 纹理和设计由以下人员完成
    • Charon
    • Luna
    • pinkmachine
    • Vivian