# Table of Contents
- [Home - CIT Resewn Docs](#home-cit-resewn-docs)
- [CIT Armor - CIT Resewn Docs](#cit-armor-cit-resewn-docs)
- [CIT Elytra - CIT Resewn Docs](#cit-elytra-cit-resewn-docs)
- [CIT Enchantment - CIT Resewn Docs](#cit-enchantment-cit-resewn-docs)
- [CIT Base - CIT Resewn Docs](#cit-base-cit-resewn-docs)
- [CIT Item - CIT Resewn Docs](#cit-item-cit-resewn-docs)
- [Global Properties - CIT Resewn Docs](#global-properties-cit-resewn-docs)
- [Mod Assets - CIT Resewn Docs](#mod-assets-cit-resewn-docs)
- [API - CIT Resewn Docs](#api-cit-resewn-docs)
- [Supported Mods - CIT Resewn Docs](#supported-mods-cit-resewn-docs)
- [Configuration - CIT Resewn Docs](#configuration-cit-resewn-docs)
- [Need Help / Found a Bug / Questions - CIT Resewn Docs](#need-help-found-a-bug-questions-cit-resewn-docs)
- [Resource Pack Authors - CIT Resewn Docs](#resource-pack-authors-cit-resewn-docs)
- [Usage - CIT Resewn Docs](#usage-cit-resewn-docs)
---
# Home - CIT Resewn Docs
* [CIT Resewn Docs](https://citresewn.shcm.io/)
»
* Home
* * *
Home
====
Welcome to CIT Resewn's docs!
CIT Resewn
----------
is a fabric mod written and maintained by [SHsuperCM](https://bit.ly/3tqu4Z1)
.
The mod provides a modern implementation of MCPatcher's Custom Item Textures, a mod that gave resourcepacks the ability to modify items' appearances based on specified conditions.
Optifine later adopted MCPatcher's features and have maintained the only working version of it.
CIT Resewn is my shot at providing support for cit outside of Optifine.
What the Doc Doin'
------------------
These docs should provide pack and mod authors with the information they need in order to work with CITs and CIT Resewn.
**Some bold text will have tooltips! (hover here)**
_Features written in italics are unique to CIT Resewn and won't be in other implementations._
If you find a problem with the docs, feel free to create a [Pull Request](https://github.com/SHsuperCM/CITResewn/tree/docs)
or open an [Issue](https://github.com/SHsuperCM/CITResewn/issues)
through Github.
[**Simplify infrastructure** with MongoDB Atlas, the leading modern database](https://server.ethicalads.io/proxy/click/10498/019f1dae-7aa4-7b10-b925-61feedcb8f9b/)
[Ads by EthicalAds](https://www.ethicalads.io/advertisers/?ref=ea-text)
---
# CIT Armor - CIT Resewn Docs
* [CIT Resewn Docs](https://citresewn.shcm.io/)
»
* CIT »
* CIT Armor
* * *
CIT Armor
=========
###### Note that features marked in _italics_ are unique to CIT Resewn.
This page applies to CITs marked with `type=armor`.
CIT Armor replaces the texture of the armor model when worn by an entity.
The replacement is a `png` texture, formatted like the vanilla armor textures (`assets/minecraft/textures/models/armor/`).
Conditions
----------
### Target
The CIT must match the armor item worn by the entity that has its armor's appearance changed.
### Overrides
The `items` condition may contain only armor items.
Effects
-------
| Key | Value Type | Description | Default |
| --- | --- | --- | --- |
| `texture.` **layer** | **[Texture Asset](https://citresewn.shcm.io/cit/cit_base/#asset-resolution)
(`.png`)** | Replaces the texture of the armor layer with the resolved texture. The layer names are the names of the texture files that are being replaced. For a list of layers, see `assets/minecraft/textures/models/armor`. | None |
[**Simplify infrastructure** with MongoDB Atlas, the leading modern database](https://server.ethicalads.io/proxy/click/10498/019f1dae-7aa4-7b10-b925-61feedcb8f9b/)
[Ads by EthicalAds](https://www.ethicalads.io/advertisers/?ref=ea-text)

---
# CIT Elytra - CIT Resewn Docs
* [CIT Resewn Docs](https://citresewn.shcm.io/)
»
* CIT »
* CIT Elytra
* * *
CIT Elytra
==========
###### Note that features marked in _italics_ are unique to CIT Resewn.
This page applies to CITs marked with `type=elytra`.
CIT Elytra replaces the texture of the elytra model when worn by an entity.
The replacement is a `png` texture, formatted like the vanilla elytra texture (`assets/minecraft/textures/entity/elytra.png`).
Conditions
----------
### Target
The CIT must match the elytra item in the chest slot for the entity that has its elytra's appearance changed.
### Overrides
The `items` condition is ignored. This CIT applies only to `minecraft:elytra`.
Effects
-------
| Key | Value Type | Description | Default |
| --- | --- | --- | --- |
| `texture` | **[Texture Asset](https://citresewn.shcm.io/cit/cit_base/#asset-resolution)
(`.png`)** | Replaces the texture of the elytra with the resolved texture. | None |
[**Simplify infrastructure** with MongoDB Atlas, the leading modern database](https://server.ethicalads.io/proxy/click/10498/019f1dae-7aa4-7b10-b925-61feedcb8f9b/)
[Ads by EthicalAds](https://www.ethicalads.io/advertisers/?ref=ea-text)

---
# CIT Enchantment - CIT Resewn Docs
* [CIT Resewn Docs](https://citresewn.shcm.io/)
»
* CIT »
* CIT Enchantment
* * *
CIT Enchantment
===============
###### Note that features marked in _italics_ are unique to CIT Resewn.
This page applies to CITs marked with `type=enchantment`.
CIT Enchantment replaces the purple glint texture that appears on enchanted items.
These glints can be layered, blended and even be placed on items without vanilla glints.
The glint is a `png` texture, formatted like the vanilla glint texture (`assets/minecraft/textures/misc/enchanted_item_glint.png`).
Conditions
----------
### Target
The CIT must match the item in that has its glint changed.
Effects
-------
| Key | Value Type | Description | Default |
| --- | --- | --- | --- |
| `texture` | **[Texture Asset](https://citresewn.shcm.io/cit/cit_base/#asset-resolution)
(`.png`)** | Replaces the texture of this glint layer with the resolved texture. | None |
| `layer` | Any whole number | The position of this glint in the order of layers. If two glints use the same layer, the one with the higher weight will render and the other will not. | `0` |
| `speed` | Any number | Multiplier for the glint's scroll speed. | `0.0` |
| `rotation` | Any number | Rotates the texture and scroll direction by the given degrees. | `0.0` |
| `duration` | Any number | Amount of time in seconds to pause on this cit when the used method is `cycle`. | `0.0` |
| `blend` | [Literal or Custom](https://citresewn.shcm.io/cit/cit_enchantment/#blending-functions) | Sets the OpenGL blending function used to apply the texture. | `add` |
| _`useGlint`_ | Boolean | Should the default enchantment glint show on the item. | `false` |
| _`blur`_ | Boolean | Should the texture be blurred before being applied. | `false` |
| _`r`_ | Any positive number | Multiplier for the texture's red component. | `1.0` |
| _`g`_ | Any positive number | Multiplier for the texture's green component. | `1.0` |
| _`b`_ | Any positive number | Multiplier for the texture's blue component. | `1.0` |
| _`a`_ | Any positive number | Multiplier for the texture's alpha component. | `1.0` |
Blending Functions
------------------
This section is very computer graphics and opengl heavy.
### Named Functions
| Function | Function |
| --- | --- |
| `replace` | Disables blending. |
| _`glint`_ | `GL_SRC_COLOR`
`GL_ONE`
_\* Mimics the vanilla glint blending._ |
| `alpha` | `GL_SRC_ALPHA`
`GL_ONE_MINUS_SRC_ALPHA` |
| `add` | `GL_SRC_ALPHA`
`GL_ONE` |
| `subtract` | `GL_ONE_MINUS_DST_COLOR`
`GL_ZERO` |
| `multiply` | `GL_DST_COLOR`
`GL_ONE_MINUS_SRC_ALPHA` |
| `dodge` | `GL_ONE`
`GL_ONE` |
| `burn` | `GL_ZERO`
`GL_ONE_MINUS_SRC_COLOR` |
| `screen` | `GL_ONE`
`GL_ONE_MINUS_SRC_COLOR` |
| `overlay` | `GL_DST_COLOR`
`GL_SRC_COLOR` |
### Custom Function
Instead of using one of the named functions, you can create your own by specifying the parameters that are passed onto OpenGL's `blendFuncSeparate` method.
This takes either 4 or 2 parameters with the alpha factors defaulting to `GL_ZERO, GL_ONE`.
The parameters are separated by spaces and can be specified by using either a decimal constant, a hexadecimal constant (with a `0x` prefix) or _by a named GL11 constant name_.
Example:
# Ways of specifying a "multiply" blending function
blend=multiply
blend=GL_DST_COLOR GL_ONE_MINUS_SRC_ALPHA
blend=GL_DST_COLOR GL_ONE_MINUS_SRC_ALPHA GL_ZERO GL_ONE
blend=774 771
blend=0x306 0x303
[**Simplify infrastructure** with MongoDB Atlas, the leading modern database](https://server.ethicalads.io/proxy/click/10498/019f1dae-7aa4-7b10-b925-61feedcb8f9b/)
[Ads by EthicalAds](https://www.ethicalads.io/advertisers/?ref=ea-text)

---
# CIT Base - CIT Resewn Docs
* [CIT Resewn Docs](https://citresewn.shcm.io/)
»
* CIT »
* CIT Base
* * *
CIT Base
========
###### Note that features marked in _italics_ are unique to CIT Resewn.
All CIT types, while having different effects, originate from CIT Base. Think of it as a parent for all other types and every type inherits its properties, sometimes overriding their behavior.
When a property is not specified, its default value is used instead, meaning all properties are optional by default.
Some property keys have aliases, these were added for legacy support. Hover over keys to see if they have aliases, try not to use them when possible.
**Hover over the properties' types to see example values.**
CITs are split into 2 parts: Conditions which determine how items are selected and Effects that change something about the item. All conditions must match for the CIT to apply.
Conditions
----------
| Key | Value Type | Description | Default |
| --- | --- | --- | --- |
| `weight` | **Integer** | When multiple CITs match the same item, the CIT with the higher weight is chosen.
When multiple matching CITs have the same weight, the CIT file name/path is the tie breaker. | 0 |
| **`items`** | **List of items** | Requires that the item is either of the ones listed.
Separated by spaces.
Namespaces (`minecraft:`) are optional.
**If not declared and the cit file name is a valid item id, it is used instead.** | None |
| `stackSize` | **Positive integer or a range** | Requires that the item matches a specific amount.
Supports open ended ranges. | Any |
| `damage` | **Positive integer or a range** | Requires that the item matches a specific damage.
Supports open ended ranges.
Supports percentages using `%`. | Any |
| `damageMask` | **Integer** | Applies a binary mask on the item's damage prior to checking `damage` (does `damage` match item damage & `damageMask`).
**Useless with modern items, added just for legacy support.** | Any |
| `hand` | **Literal** | Requires that the item is in a specific hand.
Either: `main` / `off` for mainhand or offhand | Any |
| **`enchantments`** | **List of enchantments** | Requires that the item has at least one of the enchantments listed.
Separated by spaces.
Namespaces (`minecraft:`) are optional. | Any |
| `enchantmentLevels` | **List of levels/ranges** | Requires that one of the item's enchantments matches one of the levels listed.
When `enchantments` is declared, requires that either one of `enchantments` matches the levels.
Separated by spaces. | Any |
| `nbt.` [**path**](https://citresewn.shcm.io/cit/cit_base/#nbt-path) | **[NBT Match](https://citresewn.shcm.io/cit/cit_base/#nbt-match)
** | Requires that the item matches the specified NBT predicate.
**Multiple nbt conditions are allowed.**
Accepts literal, pattern and regex checks, along with ignore-case alternatives.
When path is `display.Name` or `display.Lore.__`, the nbt is json evaluated when the match value is not a json.
See [NBT Path](https://citresewn.shcm.io/cit/cit_base/#nbt-path)
and [NBT Match](https://citresewn.shcm.io/cit/cit_base/#nbt-match)
for more info. | None |
Effects
-------
| Key | Value Type | Description | Default |
| --- | --- | --- | --- |
| `type` | **Literal** | Which type to apply on this CIT.
Either: [`item`](https://citresewn.shcm.io/cit/cit_item)
/ [`armor`](https://citresewn.shcm.io/cit/cit_armor)
/ [`elytra`](https://citresewn.shcm.io/cit/cit_elytra)
/ [`enchantment`](https://citresewn.shcm.io/cit/cit_enchantment)
Other mods may add different options. | `item` |
* * *
NBT Path
--------
The `nbt` property cannot be declared by itself, there must be a unique nbt tag path to target for every `nbt` condition.
The path starts from the item's `tag` root and is separated by dots. For example:
nbt.CustomModelData=53
will match the nbt for `{tag:{CustomModelData:53}}`.
And
nbt.display.Name={"text":"Some Item's Name"}
will match the nbt for `{tag:{display:{Name:"{\"text\":\"Some Item's Name\"}"}}}`.
When a path crosses an nbt list, the next part of the path is the index. Paths also support wildcards using `*` for both nbt lists and compounds.
So to match the first lore line you'd use:
nbt.display.Lore.0=The first line of the lore
And to match any lore line you'd use:
nbt.display.Lore.*=Any line in the lore
NBT Match
---------
There are multiple options for how you could do this. Either by literal values, matching patterns or by matching regex. Pattern and regex matching also provide case-insensitive options.
To match literally, the value is used normally. So to match the item name "`Some Name`", you'd write:
nbt.display.Name=Some Name
To match a pattern, add the `pattern:` prefix or the `ipattern:` prefix for case-insensitivity.
Patterns allow for both wild cards and wild characters, declared using `*` and `?` respectively.
To match **a name before "`'s Sword`"**, you'd write:
nbt.display.Name=pattern:*'s Sword
To match **any one character after "`Part`"**, you'd write:
nbt.display.Name=pattern:Part ?
Multiple wild cards and characters are allowed.
To match regex, add the `regex:` prefix or the `iregex:` prefix for case-insensitivity.
For example, to match any of the following: "`First Item`" / "`Second Item`" / "`Third Item`", you'd write:
nbt.display.Name=regex:^(First|Second|Third) Item$
#### Matching json
When matching either `nbt.display.Name` or `nbt.display.Lore.___`, the match part can be either a json or not. When not matching a json, the json in the item is evaluated into its plain text representation. For example `{"text":"Some Item's Name"}` is evaluated and matches correctly against `Some Item's Name`.
This means that to match an item that's been named: "`Some Item's Name`", you can either do:
nbt.display.Name={"text":"Some Item's Name"}
or
nbt.display.Name=Some Item's Name
Note that this is supported for both patterns and regex as well by prefixing before the json if present.
Asset Resolution
----------------
Most effects use the `Asset` type to find files. CITs will find assets in their own resourcepack through either an absolute or a relative declared path.
Assets are type specific, meaning that the file extension is optional in the properties declaration but required for the file name. For example the `texture` property will only look for textures, so both `example` and `example.png` would work when `texture` is looking for `example.png`.
While not required, you can force a path to be relative by prefixing it with `./` like so:
# minecraft/citresewn/cit/sticks/stick.properties
# ↓
# minecraft/citresewn/cit/sticks/my_textures/stick_texture.png
# forced relative texture
texture=./my_textures/stick_texture.png
# assumed relative texture
texture=my_textures/stick_texture.png
Relative paths also support going up directories with `..` like so:
# minecraft/citresewn/cit/sticks/properties/stick.properties
# ↓
# minecraft/citresewn/cit/sticks/my_textures/stick_texture.png
# go back one level and into textures
texture=./../my_textures/stick_texture.png
Absolute paths can start from multiple roots, examples:
# Full resourcepack path:
texture=assets/minecraft/citresewn/cit/item_textures/texture.png
# ↓
# assets/minecraft/citresewn/cit/item_textures/texture.png
# Namespaced full path:
texture=minecraft:citresewn/cit/item_textures/texture.png
# ↓
# assets/minecraft/citresewn/cit/item_textures/texture.png
# Relative namespace full path:
texture=citresewn/cit/item_textures/texture.png
# ↓ (when the CIT is in the minecraft namespace)
# assets/minecraft/citresewn/cit/item_textures/texture.png
# Namespaced typed directories:
texture=minecraft:item/texture.png
# ↓
# assets/minecraft/textures/item/texture.png
# Relative namespace typed directories:
texture=item/texture.png
# ↓ (when the CIT is in the minecraft namespace)
# assets/minecraft/textures/item/texture.png
# The typed directories are:
# .png → textures/
# .json → models/
_When an asset is not declared, some properties will also try to find assets with similar names as their CITs' in the same directory. For Example:_
# assets/minecraft/citresewn/cit/stuff/my_cool_stick.properties
type=item
items=stick
nbt.CustomModelData=1
# because no texture/model were declared, the item CIT will search for either:
# model=assets/minecraft/citresewn/cit/stuff/my_cool_stick.json
# or
# texture=assets/minecraft/citresewn/cit/stuff/my_cool_stick.png
# with models having more priority than textures.
[**Simplify infrastructure** with MongoDB Atlas, the leading modern database](https://server.ethicalads.io/proxy/click/10498/019f1dae-7aa4-7b10-b925-61feedcb8f9b/)
[Ads by EthicalAds](https://www.ethicalads.io/advertisers/?ref=ea-text)

---
# CIT Item - CIT Resewn Docs
* [CIT Resewn Docs](https://citresewn.shcm.io/)
»
* CIT »
* CIT Item
* * *
CIT Item
========
###### Note that features marked in _italics_ are unique to CIT Resewn.
This page applies to CITs marked with `type=item`(optional as `item` is the default type).
CIT Item replaces the appearance of:
* Items in inventories
* Items in the hotbar
* Held Items
* Items worn in the head slot
* Items in item frames
* Dropped items
* Tossed projectiles(snowball, egg, enderpearl, splash/lingering potions, etc..)
The replacement can either be a `json` model or a `png` texture.
Conditions
----------
### Target
The CIT must match the item that has its appearance changed.
### Overrides
The `items` condition is required for this type. **(the CIT can be named after an item in the namespace to add this automatically)**
Effects
-------
| Key | Value Type | Description | Default |
| --- | --- | --- | --- |
| **`texture`** | **[Texture Asset](https://citresewn.shcm.io/cit/cit_base/#asset-resolution)
(`.png`)** | Replaces the item's model with one generated by the resolved texture. **The parent of the generated model is the model associated with the first item in `items`.** | None |
| `model` | **[Model Asset](https://citresewn.shcm.io/cit/cit_base/#asset-resolution)
(`.json`)** | Replaces the item's model with one described by the resolved json. [This uses the vanilla model formatting](https://minecraft.wiki/w/Tutorials/Models)
.
Models loaded by this property also gain the ability to load relative assets for textures, parents and overrides by prefixing `./`.
When `texture` is also declared, the texture is used to replace all of the textures in the model loaded by the json. | None |
| `texture.` **sub** | **[Texture Asset](https://citresewn.shcm.io/cit/cit_base/#asset-resolution)
(`.png`)** | Same as `texture` but replaces a sub texture instead. Multiple sub textures may be defined. This can be used for both model overrides and layer textures.
For overrides, the sub texture name is the sub model file's name (e.g.`bow_pulling_2` for a fully pulled bow).
For layers, the sub texture name is either the layer name (e.g.`layer1`) or the texture file name (e.g.`potion_overlay`). | None |
| `model.` **sub** | **[Model Asset](https://citresewn.shcm.io/cit/cit_base/#asset-resolution)
(`.json`)** | Same as `model` but replaces a sub model instead. Multiple sub models may be defined. This can be used for model overrides.
The sub model name is the sub model file's name (e.g.`bow_pulling_2` for a fully pulled bow). | None |
[**Simplify infrastructure** with MongoDB Atlas, the leading modern database](https://server.ethicalads.io/proxy/click/10498/019f1dae-7aa4-7b10-b925-61feedcb8f9b/)
[Ads by EthicalAds](https://www.ethicalads.io/advertisers/?ref=ea-text)

---
# Global Properties - CIT Resewn Docs
* [CIT Resewn Docs](https://citresewn.shcm.io/)
»
* CIT »
* Global Properties
* * *
Global Properties
=================
###### Note that features marked in _italics_ are unique to CIT Resewn.
Commonly known as `cit.properties`, Global Properties is not a cit but rather a config that is set for the entire resourcepack.
Location
--------
The pack's global properties can be either (ordered by priority. if one exists, the rest are ignored):
`assets/minecraft/citresewn/cit.properties`
`assets/minecraft/optifine/cit.properties`
`assets/minecraft/mcpatcher/cit.properties`
Properties
----------
All properties (and `cit.properties` itself) are optional.
| Key | Value Type | Description | Default |
| --- | --- | --- | --- |
| `useGlint` | **Boolean** | If false, removes the default glint texture from every item. | `true` |
| `cap` | Any positive whole number | Controls the maximum allowed layers of CIT Enchantments per item. | None |
| `method` | **Literal** | Determines how visibility is controlled for CIT Enchantments. Values:
`average`: If the glint has an enchantment condition, its visibility will be determined by
` / `
`layered`: Same as average but the highest level is used instead of the total
` / `
`cycle`: Cycles through every glint layer in turn. The glint's `duration` property will pause on it for the specified duration. | `average` |
| `fade` | Any non-negative number | Amount of time in seconds to fade between CIT Enchantments when method is set to `cycle`. | `0.5` |
[**Simplify infrastructure** with MongoDB Atlas, the leading modern database](https://server.ethicalads.io/proxy/click/10498/019f1dae-7aa4-7b10-b925-61feedcb8f9b/)
[Ads by EthicalAds](https://www.ethicalads.io/advertisers/?ref=ea-text)

---
# Mod Assets - CIT Resewn Docs
* [CIT Resewn Docs](https://citresewn.shcm.io/)
»
* Mods »
* Mod Assets
* * *
Mod Assets
==========
_If you didn't know, your mod jar is basically a resourcepack!_
Example:
Let's say the mod "Gold Sticks" wants to add replacement textures for multiple gold sticks. The gold stick is identified by `goldsticks:golden_stick`.
Now, the mod resources have the following file structure:
src/main/resources/assets/goldsticks/models/item/golden_stick.json
src/main/resources/assets/goldsticks/textures/item/golden_stick.png
src/main/resources/assets/goldsticks/citresewn/multiple_golden_sticks_2.properties
src/main/resources/assets/goldsticks/citresewn/multiple_golden_sticks_2.png
Now, `multiple_golden_sticks_2.properties` contains the following CIT:
type=item
items=goldsticks:golden_stick
stackSize=2-
texture=multiple_golden_sticks_2.png
If CIT Resewn is present(and Fabric API), it will load that cit from the mod jar. And if you have 2 or more golden sticks, the `multiple_golden_sticks_2.png` texture will be used instead of `golden_stick.png`!
[**Simplify infrastructure** with MongoDB Atlas, the leading modern database](https://server.ethicalads.io/proxy/click/10498/019f1dae-7aa4-7b10-b925-61feedcb8f9b/)
[Ads by EthicalAds](https://www.ethicalads.io/advertisers/?ref=ea-text)

---
# API - CIT Resewn Docs
* [CIT Resewn Docs](https://citresewn.shcm.io/)
»
* Mods »
* API
* * *
API
===
CIT Resewn also provides\* an API that allows adding custom CIT types and conditions.
\* API is being rewritten, do not use the API in its current state.
### Types
### Conditions
[**Simplify infrastructure** with MongoDB Atlas, the leading modern database](https://server.ethicalads.io/proxy/click/10498/019f1dae-7aa4-7b10-b925-61feedcb8f9b/)
[Ads by EthicalAds](https://www.ethicalads.io/advertisers/?ref=ea-text)

---
# Supported Mods - CIT Resewn Docs
* [CIT Resewn Docs](https://citresewn.shcm.io/)
»
* Mods »
* Supported Mods
* * *
Supported Mods
==============
While CIT Resewn does not require any additional dependencies, there are some mods that it supports.
You got some mod that isn't working with CIT Resewn? [Submit an Issue](https://github.com/SHsuperCM/CITResewn/issues)
and I'll take a look!
Explicit Support
----------------
CIT Resewn is written specifically to allow using these mods.
### [Cloth Config](https://www.curseforge.com/minecraft/mc-mods/cloth-config)
Adds a custom config screen for CIT Resewn.
Accessed through Mod Menu or by running `/citresewn config`.
### [Mod Menu](https://www.curseforge.com/minecraft/mc-mods/modmenu)
CIT Resewn is listed and a button is added to access the Cloth Config screen.
Incompatible
------------
### [Canvas](https://www.curseforge.com/minecraft/mc-mods/canvas-renderer)
The game crashes with both present.
Support is planned eventually.
Recommended
-----------
Some mods that should natively work with CIT Resewn.
### [LambdAurora's Optifine Alternatives List](https://lambdaurora.dev/optifine_alternatives/)
This list(and CIT Resewn) is an effort to ditch Optifine in favor of more dynamic, open sourced and modder friendly replacements. One of Optifine's biggest problems is its development. After being so popular for such a long time it is still being developed by a single person. By splitting its features across multiple developers, more attention can be given to each thing. I am going to be focusing on CIT, thus giving it the love it deserves. Many brilliant devs are working on stuff like performance, shaders, connected textures, dynamic lights, sky boxes, even zoom. They will have my full support.
LambdAurora has compiled these mods into a nice, organized list. Thank you for that!
[**Simplify infrastructure** with MongoDB Atlas, the leading modern database](https://server.ethicalads.io/proxy/click/10498/019f1dae-7aa4-7b10-b925-61feedcb8f9b/)
[Ads by EthicalAds](https://www.ethicalads.io/advertisers/?ref=ea-text)

---
# Configuration - CIT Resewn Docs
* [CIT Resewn Docs](https://citresewn.shcm.io/)
»
* Usage »
* Configuration
* * *
Configuration
=============
Changing the Config
-------------------
The config is located at `%appdata%/.minecraft/config/citresewn.json`.
If you have [Cloth Config](https://www.curseforge.com/minecraft/mc-mods/cloth-config)
installed, run `/citresewn config` and if you have [Mod Menu](https://www.curseforge.com/minecraft/mc-mods/modmenu)
installed, in the main menu/pause screen go to `Mods > CIT Resewn > Config`.
Config Values
-------------
| Config Name | Description | Default Config Value |
| --- | --- | --- |
| `Enabled`
or `enabled` | Whether CIT Resewn should load CITs. | `true` |
| `Mute Errors`
or `mute_errors` | Should cit errors be muted in the logs. | `false` |
| `Mute Warns`
or `mute_warns` | Should cit warnings be muted in the logs. | `false` |
| `Cache`
or `cache_ms` | How often should the cache be refreshed.
If set to 0, caching will be disabled. | `50`ms(every tick) |
| `Broken Paths`
or `broken_paths` | Should CIT Resewn be able to read broken folder/file names from CIT packs. This option is unstable and not recommended, any bugs it causes will be ignored.
Broken Paths are any files in a resourcepack that do not follow standard minecraft pack formatting. The pack format permits names for files and folders that may only contain the following: lower case english alphabet(`a-z`), any number(`0-9`), underscores(`_`), dots(`.`) and dashes(`-`). | `false` |
[**Simplify infrastructure** with MongoDB Atlas, the leading modern database](https://server.ethicalads.io/proxy/click/10498/019f1dae-7aa4-7b10-b925-61feedcb8f9b/)
[Ads by EthicalAds](https://www.ethicalads.io/advertisers/?ref=ea-text)

---
# Need Help / Found a Bug / Questions - CIT Resewn Docs
* [CIT Resewn Docs](https://citresewn.shcm.io/)
»
* Usage »
* Need Help / Found a Bug / Questions
* * *
Need Help / Found a Bug / Questions
===================================
### Porting to 1.16 or any other version:
See [#48](https://github.com/SHsuperCM/CITResewn/issues/48)
.
### Porting to Forge:
See [#56](https://github.com/SHsuperCM/CITResewn/issues/56)
.
### A resourcepack is not loading:
Check the logs, they are more useful than you think!
### Non \[a-z0-9/.\_-\] character in path of location:
The resourcepack you're using is not following minecraft's pack formatting standards.
Contact the pack author and inform them.
For more information on Broken Paths, read the [Broken Paths section in the config docs](https://citresewn.shcm.io/usage/config)
.
### CIT Resewn doesn't work/crashes with another mod installed.
Check if the mod is in the incompatible section of [Supported Mods](https://citresewn.shcm.io/mods/supported/#incompatible)
.
### Anything else:
Feel free to open an [Issue](https://github.com/SHsuperCM/CITResewn/issues)
!
[**Simplify infrastructure** with MongoDB Atlas, the leading modern database](https://server.ethicalads.io/proxy/click/10498/019f1dae-7aa4-7b10-b925-61feedcb8f9b/)
[Ads by EthicalAds](https://www.ethicalads.io/advertisers/?ref=ea-text)

---
# Resource Pack Authors - CIT Resewn Docs
* [CIT Resewn Docs](https://citresewn.shcm.io/)
»
* Usage »
* Resource Pack Authors
* * *
Resource Pack Authors
=====================
CITs are most commonly added to the game via resource packs, here's how you do that.
// This guide will assume you have a basic understanding of creating resource packs.
Format
------
CITs are stored in `.properties` files. Poperties are a common file format where each line stores a single property containing a key and a value that are separated by an equals sign.
Lines starting with `#` will be considered comments and ignored.
Example:
# example_stick.properties
# This is an example of a properties file for a cit
type=item
items=stick
nbt.display.Name=Example Stick
texture=example_stick.png
You can read more about the `.properties` format [here](https://en.wikipedia.org/wiki/.properties)
.
Structure
---------
CIT Resewn will look for cits in the game's assets. For resource packs it will look in either:
`assets/minecraft/citresewn/cit/`..
`assets/minecraft/optifine/cit/`..
`assets/minecraft/mcpatcher/cit/`..
Files and directories within the cit roots must follow standard resource pack formatting rules such as [snake\_case](https://en.wikipedia.org/wiki/Snake_case)
names and no special characters.
The name `cit.properties` is reserved for [Global Properties](https://citresewn.shcm.io/cit/global)
.
Examples:
My Cool Resourcepack.zip/assets/minecraft/citresewn/cit/example_stick.properties
My Cool Resourcepack.zip/assets/minecraft/citresewn/cit/example_stick.png
My Cool Resourcepack.zip/assets/minecraft/citresewn/cit/emerald/sword/emerald_sword.properties
My Cool Resourcepack.zip/assets/minecraft/citresewn/cit/emerald/sword/emerald_sword.json
My Cool Resourcepack.zip/assets/minecraft/citresewn/cit/emerald/sword/emerald_sword.png
My Cool Resourcepack.zip/assets/minecraft/citresewn/cit/obsidian_dust/obsidian_dust.properties
My Cool Resourcepack.zip/assets/minecraft/citresewn/cit/obsidian_dust/obsidian_dust.png
Tips
----
CIT Resewn provides a lot of information in the logs, it is recommended that you have them open while working on a pack.
[**Simplify infrastructure** with MongoDB Atlas, the leading modern database](https://server.ethicalads.io/proxy/click/10498/019f1dae-7aa4-7b10-b925-61feedcb8f9b/)
[Ads by EthicalAds](https://www.ethicalads.io/advertisers/?ref=ea-text)

---
# Usage - CIT Resewn Docs
* [CIT Resewn Docs](https://citresewn.shcm.io/)
»
* Usage »
* Usage
* * *
Usage
=====
Downloads
---------
You can get CIT Resewn by either:
* Downloading from Modrinth: [modrinth.com/mod/cit-resewn](https://modrinth.com/mod/cit-resewn)
* Downloading from CurseForge: [curseforge.com/minecraft/mc-mods/cit-resewn](https://www.curseforge.com/minecraft/mc-mods/cit-resewn)
* Compiling from source: [github.com/SHsuperCM/CITResewn](https://github.com/SHsuperCM/CITResewn)
(by running `gradlew build`)
Installation
------------
1. Download and install Fabric from their [official website](https://fabricmc.net/use/)
.
2. Download CIT Resewn.
3. Place CIT Resewn in `%appdata%/.minecraft/mods/`.
4. Optionally also install [Mod Menu](https://www.curseforge.com/minecraft/mc-mods/modmenu)
and [Cloth Config](https://www.curseforge.com/minecraft/mc-mods/cloth-config)
for ingame config support.
Usage
-----
Add resource packs and mods that utilize CITs, these docs are mainly for their authors.
[**Simplify infrastructure** with MongoDB Atlas, the leading modern database](https://server.ethicalads.io/proxy/click/10498/019f1dae-7aa4-7b10-b925-61feedcb8f9b/)
[Ads by EthicalAds](https://www.ethicalads.io/advertisers/?ref=ea-text)

---