Tier Tower

An esoteric and data-driven cosmetic leveling system.

1,90k

Quick challenge

How far can you run before the mobs catch you?

Tier Tower

Tier Tower Logo

A data-driven cosmetic leveling system.

---

Tier Tower adds chat badge and nameplate cosmetics that players can unlock by sacrificing items. Several new decorative blocks are also added.

- Drop items into a Vortex to sacrifice them and gain eminence. (EMI integration shows valid items.) - Jump down into a Vortex to sacrifice your current eminence to prestige, speeding up future leveling. - The Vortex is uncraftable by default since servers may want to restrict it to certain areas. - The Obelisk display's offset can be set by using an Obelisk item on the top, bottom, or sides of the front face of the block.

---

Slimeist with an echo nameplate

---

Datapack Format

Overview

Tier Tower is based around sequences of tiers, with progression based on custom mathematical formulae.

The sequence `tier_tower:main` is special, as players will start at tier 0 of this sequence. Other sequences can be created and assigned to players using commands or through sequence progression.

Prestige System

Players acquire prestige points per-sequence, according to the `prestige_value_function` defined in the sequence JSON. When a player prestiges, their prestige points increase by this amount. The prestige multiplier is then recalculated using the `prestige_multiplier_function`, which affects future leveling costs.

Sequence Format

```json5 // data/tier_tower/tier_tower/sequence/main.json { // if the first tier doesn't specify a base leveling cost, this value is used instead "default_base_leveling_cost": 1,

/* The prestige value function determines the incremental prestige points gained when prestiging. Available variables: - points: the total points in the current sequence - tier: the (0-based) index of the current tier - level: the (0-based) index of the current level within the current tier - level_points: the number of points within the current level */ "prestige_value_function": "(points - 5000.0)",

/* The prestige multiplier function determines the maximum multiplier applied during leveling. The actual multiplier for each item will be a random value between 1.0 and this value. Available variables: - prestige_points: the total accumulated prestige points in the current sequence */ "prestige_multiplier_function": "min(8.0, (1.0 + (prestige_points / 5000.0)))",

// the tiers that must be progressed through, in order "tiers": [ "minecraft:copper", /* ... */ "minecraft:netherite" ],

// optional next sequence to switch to after completing this one "next_sequence": "tier_tower:example" } ```

Tier Format

```json5 // data/minecraft/tier_tower/tier/netherite.json { // the number of levels in this tier that must be completed to reach the next tier "level_count": 10,

/* The leveling cost for level index 0 in this tier. Available variables: - prev: the hypothetical leveling cost of the one beyond the highest level in the previous tier, or `default_base_leveling_cost` if this is the first tier */ "base_leveling_cost": "(prev * 0.75)",

/* The leveling cost for the remaining levels in this tier. Available variables: - levels: the value of `level_count`, provided for convenience - base: the computed value of `base_leveling_cost` - prev: the leveling cost of the previous level in this tier - level: the index of the level for which the cost is being computed */ "leveling_cost_function": "((((5.0 * level) + 610.0) * 32.0) + base)",

// optional: eminence points will be lost over time while in this tier (useful for making an 'infinite' highest tier) "erosion_rate": { // the number eminence points lost per interval "loss": 1, // the number of ticks between each erosion event "interval": 20, }, } ```

Expression Language

Formulae can be written with standard mathematical operators (`+`, `-`, `*`, `/`, `^`), parentheses for grouping, and the following functions: - `min(a, b, ...)`: returns the minimum of the arguments - `max(a, b, ...)`: returns the maximum of the arguments - `sqrt(x)`: returns the square root of `x` - `log(x)`: returns the natural logarithm of `x` - `exp(x)`: returns e raised to the power of `x` - `e()`: returns the value of e (2.71828...) - `pow(x, y)`: returns `x` raised to the power of `y` - `abs(x)`: returns the absolute value of `x` - `floor(x)`: returns the largest integer less than or equal to `x` - `ceil(x)`: returns the smallest integer greater than or equal to `x` - `round(x)`: returns the nearest integer to `x` - `pi()`: returns the value of π (3.14159...) - `sin(x)`, `cos(x)`, `tan(x)`: trigonometric functions (x in radians)

---

Resourcepack Format

In addition to the datapack entry, several textures must be provided. We will use the tier `minecraft:copper` for example paths.

Badge Texture

`assets/minecraft/textures/tier_tower/badge/copper.png` provides the chat badge. ```json5 // assets/minecraft/textures/tier_tower/badge/copper.png.mcmeta { "tier_tower:chat_badge": { // the color used for level numbering on the badge "text_color": { "r": 236, "g": 221, "b": 255 } } } ```

Frame Texture

`assets/minecraft/textures/tier_tower/frame/copper.png` provides the nameplate frame. It is made up of three 16x16 sections, that are aligned horizontally to the left side, center, and right side of the nameplate respectively.

Obelisk Texture

`assets/minecraft/textures/tier_tower/obelisk/copper.png` provides the outline texture for the Obelisk.

Tower Texture

`assets/minecraft/textures/tier_tower/tower/copper.png` provides the tower slice texture used in the Obelisk progress display.

---

License

Tier Tower is licensed under the LGPL-3.0 license. See LICENSE.LESSER for more details.

A modified version of the Kiwi Soda font was used in the icon.

Sections of Create's creative tab and virtual fluid code were used under the MIT license.

Credits

- Code by Slimeist - Textures and design by - Charon - Luna - pinkmachine - Vivian

ADS