aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-05-11 03:28:05 +0200
committerLinnea Gräf <nea@nea.moe>2024-05-14 18:45:59 +0200
commit7682534f6fd139b75f24c79b76098fe05f0fa0fe (patch)
tree34d94c8fd7b531da128ff0130bf463393e2560e0 /docs
parent53dc0c3b0a758ce2afff2637a5a5f22aa1733c56 (diff)
downloadFirmament-7682534f6fd139b75f24c79b76098fe05f0fa0fe.tar.gz
Firmament-7682534f6fd139b75f24c79b76098fe05f0fa0fe.tar.bz2
Firmament-7682534f6fd139b75f24c79b76098fe05f0fa0fe.zip
Add custom global textures
Diffstat (limited to 'docs')
-rw-r--r--docs/Texture Pack Format.md46
1 files changed, 46 insertions, 0 deletions
diff --git a/docs/Texture Pack Format.md b/docs/Texture Pack Format.md
index 5e466bf..bebcbb4 100644
--- a/docs/Texture Pack Format.md
+++ b/docs/Texture Pack Format.md
@@ -157,3 +157,49 @@ armor you can use `assets/firmskyblock/textures/models/armor/{skyblock_id}_layer
regular leather colors. If you want the leather colors to be applied, supply the normal non-`_overlay` variant, and
also supply a blank `_overlay` variant. You can also put non-color-affected parts into the `_overlay` variant.
+## Global Item Texture Replacement
+
+Most texture replacement is done based on the SkyBlock id of the item. However, some items you might want to re-texture
+do not have an id. The next best alternative you had before was just to replace the vanilla item and add a bunch of
+predicates. This tries to fix this problem, at the cost of being more performance intensive than the other re-texturing
+methods.
+
+The entrypoint to global overrides is `firmskyblock:overrides/item`. Put your overrides into that folder, with one file
+per override.
+
+```json5
+{
+ "screen": "testrp:chocolate_factory",
+ "model": "testrp:time_tower",
+ "predicate": {
+ "firmament:display_name": {
+ "regex": "Time Tower.*"
+ }
+ }
+}
+```
+
+There are three parts to the override.
+
+The `model` is an *item id* that the item will be replaced with. This means the
+model will be loaded from `assets/<namespace>/models/item/<id>.json`. Make sure to use your own namespace to
+avoid collisions with other texture packs that might use the same id for a gui.
+
+The `predicate` is just a normal [predicate](#predicates). This one does not support the vanilla predicates. You can
+still use vanilla predicates in the resolved model, but this will not allow you to fall back to other global overrides.
+
+### Global item texture Screens
+
+In order to improve performance not all overrides are tested all the time. Instead you can prefilter by the screen that
+is open. First the gui is resolved to `assets/<namespace>/filters/screen/<id>.json`. Make sure to use your own namespace
+to avoid collisions with other texture packs that might use the same id for a screen.
+
+```json
+{
+ "title": "Chocolate Factory"
+}
+```
+
+Currently, the only supported filter is `title`, which accepts a [string matcher](#string-matcher). You can also use
+`firmament:always` as an always on filter (this is the recommended way).
+