aboutsummaryrefslogtreecommitdiff
path: root/docs/Texture Pack Format.md
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2024-08-09 00:49:36 +0200
committerLinnea Gräf <nea@nea.moe>2024-08-09 02:20:41 +0200
commit1606188d9ad65c66e9d873497ea3271dbdadaf77 (patch)
treea33ea87c76bd672fe3902455742ba42ae8c91ee1 /docs/Texture Pack Format.md
parent2a023d0a8d4e9af1dff21ea1bc997dfa0c686b14 (diff)
downloadfirmament-1606188d9ad65c66e9d873497ea3271dbdadaf77.tar.gz
firmament-1606188d9ad65c66e9d873497ea3271dbdadaf77.tar.bz2
firmament-1606188d9ad65c66e9d873497ea3271dbdadaf77.zip
Add custom block textures
Diffstat (limited to 'docs/Texture Pack Format.md')
-rw-r--r--docs/Texture Pack Format.md51
1 files changed, 51 insertions, 0 deletions
diff --git a/docs/Texture Pack Format.md b/docs/Texture Pack Format.md
index 859252f..4726e53 100644
--- a/docs/Texture Pack Format.md
+++ b/docs/Texture Pack Format.md
@@ -465,3 +465,54 @@ to avoid collisions with other texture packs that might use the same id for a sc
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).
+## Block Model Replacements
+
+If you want to replace block textures in the world you can do so using block overrides. Those are stored in
+`assets/firmskyblock/overrides/blocks/<id>.json`. The id does not matter, all overrides are loaded. This file specifies
+which block models are replaced under which conditions:
+
+```json
+{
+ "modes": [
+ "mining_3"
+ ],
+ "area": [
+ {
+ "min": [
+ -31,
+ 200,
+ -117
+ ],
+ "max": [
+ 12,
+ 223,
+ -95
+ ]
+ }
+ ],
+ "replacements": {
+ "minecraft:blue_wool": "firmskyblock:mithril_deep",
+ "minecraft:light_blue_wool": {
+ "block": "firmskyblock:mithril_deep",
+ "sound": "minecraft:block.wet_sponge.hit"
+ }
+ }
+}
+```
+
+| Field | Required | Description |
+|-------------------------|----------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
+| `modes` | yes | A list of `/locraw` mode names. |
+| `area` | no | A list of areas. Blocks outside of the coordinate range will be ignored. If the block is in *any* range it will be considered inside |
+| `area.min` | yes | The lowest coordinate in the area. Is included in the area. |
+| `area.max` | yes | The highest coordinate in the area. Is included in the area. |
+| `replacements` | yes | A map of block id to replacement mappings |
+| `replacements` (string) | yes | You can directly specify a string. Equivalent to just setting `replacements.block`. |
+| `replacements.block` | yes | You can specify a block model to be used instead of the regular one. The model will be loaded from `assets/<namespace>/models/block/<path>.json` like regular block models. |
+| `replacements.sound` | no | You can also specify a sound override. This is only used for the "hit" sound effect that repeats while the block is mined. The "break" sound effect played after a block was finished mining is sadly sent by hypixel directly and cannot be replaced reliably. |
+
+> A quick note about optimization: Not specifying an area (by just omitting the `area` field) is quicker than having an
+> area encompass the entire map.
+>
+> If you need to use multiple `area`s for unrelated sections of the world it might be a performance improvement to move
+> unrelated models to different files to reduce the amount of area checks being done for each block.