# Annotations

### **@Config**

This **must** be attached to your config class. It defines the file name of your config, minus the extension.

### **@Config.Gui.Background**

This may be attached to your config class. If attached, it'll set the background texture for your config.

### **@Config.Gui.CategoryBackground**

Any number of these may be attached to your config class. If attached, it'll set the background texture for a specific category in your config.

### **@ConfigEntry.Category**

This may be attached to a config field. If attached, it'll set the top level category of the config field. Categories are listed in the order they're first defined.

### **@ConfigEntry.BoundedDiscrete**

This may be attached to an `int` or `long` config field. If attached, it'll render that config entry as a slider instead of a free number field. It takes a required `max` argument, and an optional `min` which defaults to `0`.

### **@ConfigEntry.Gui.Excluded**

This may be attached to a config field. If attached, it'll exclude that field from the config gui.

### **@ConfigEntry.Gui.TransitiveObject**

This may be attached to any Object config field. If attached, all of that inner object's fields will appear at the same level as this field.

### **@ConfigEntry.Gui.CollapsibleObject**

This may be attached to any Object config field. If attached, all of that inner object's fields will appear in a collapsible subcategory. It takes an optional `startExpanded` parameter to determine whether the subcategory is open or closed when the config screen is opened. It defaults to `false`.

### **@ConfigEntry.Gui.Tooltip**

This may be attached to any config field. If attached, it'll set a tooltip for that field. The tooltip text is defined in your lang file. It takes an optional parameter `count`, which is the number of text rows in your tooltip. Default is `1`.

### **@ConfigEntry.Gui.PrefixText**

This may be attached to any config field. If attached, it'll inject a static text entry into the gui above that field's entry in the config. The text content is defined in your lang file.

### **Special case: @Comment**

If you attach Jankson's `@Comment` annotation to a field, the `String` you pass as a parameter will be applied directly as a tooltip, without lang key generation. If you're using the `JanksonConfigSerializer`, the comment will also appear in the serialized config.
