# Notable 2.0 Changes

## 🔨 Breaking changes

### Change of ID format

The identifiers of all configured objects in Tooltips have been changed. Now the identifier includes the full path to the object. For example, this is what a preset ID would look like in a folder:

<mark style="color:blue;">`mypreset -> folder/file/mypreset`</mark>&#x20;

This will require modifification all theme ID in presets to match the new format.

### Local placeholders removed

Now instead of <mark style="color:blue;">`%furniture_id%`</mark>  and <mark style="color:blue;">`%var_key%`</mark>, use context & variable [Functions](#functions).

### Furnish no longer needed

Furnish was used to store price data about IDs, you can now do that using the [$data function](https://tooltips.gitbook.io/tooltips/configuration/preset/functions#usddata-key).

### Hex codes broken

Now instead of hex color codes, the [MiniMessage format](#minimessage) is used, even in preset background colors.

## ✨ New

### Functions

Most important addition are furnitures. They allow to display advanced text and placeholders. Display static data from the preset file, context from conditions or conditional text. [Functions](https://tooltips.gitbook.io/tooltips/configuration/preset/functions).

### Context

Now, conditions are able to provide context. Context is information about the things that a condition checks. For example, for a <mark style="color:blue;">`lookingatfurniture`</mark> condition, the context is the ID of the furniture. This can be accessed using [functions](#functions).

### Data

This allows to define custom data in a preset file, which can be accessed with the [data function](https://tooltips.gitbook.io/tooltips/configuration/preset/functions#usddata-key). This data can be prices of items, names of NPCs or text lines. This is a very powerful feature, which replaces Furnish.

### MiniMessage

MiniMessage support, which allows for richer format in messages. However note that not all tags are included, since italic, bold and underline cannot be supported. [Learn more about the format](https://docs.advntr.dev/minimessage/format.html#minimessage-format).

### Animations

You can now animate text inside presets. It will only work if a preset is being shown using conditions. [Check out the animation types and format](https://tooltips.gitbook.io/tooltips/configuration/preset/animations).

### Optimizations

Split the condition and tooltip threads. Now conditions are checked separately from sending the tooltips, which means that tooltips can be refreshed more often.

### Priorities

Presets used to be checked more or less randomly. Now you can define a presets priority. The preset with the highest priority will be shown first. They can be set for [presets](https://tooltips.gitbook.io/tooltips/configuration/preset#properties) and for entire [preset file](https://tooltips.gitbook.io/tooltips/configuration/preset#file-priority).

### Reshow

A [reshow property](https://tooltips.gitbook.io/tooltips/configuration/preset#show-defines-how-this-preset-is-shown) in presets, which will redisplay the tooltip (fade in & fade out) if text changes.

### BetonQuest support

BetonQuest support, [documented here](https://tooltips.gitbook.io/tooltips/integrations#betonquest). Tutorial on how to use it here.

### Other

#### - Support for quotes in arguments

```javascript
test{arg="Longer string with spaces";  arg1="another arg"}
```

#### - Dynamic conditions

Conditions can be registered at runtime, anytime (API related)

#### - Specify custom icon width

Icons can now have a custom, user-provided width. Documented on [the icon page](https://tooltips.gitbook.io/tooltips/configuration/icon).
