From db3730bb21914bb1f034506cfc218054bf7a5fe6 Mon Sep 17 00:00:00 2001 From: quat1024 Date: Sun, 9 Jul 2023 00:43:55 -0400 Subject: [PATCH] Automatic face identifying vastly cuts down the amount of custom models needed --- README.md | 48 ++-- .../cottonmc/templates/TemplatesClient.java | 65 ++--- .../model/UnbakedAutoRetexturedModel.java | 90 +++++++ ...l.java => UnbakedJsonRetexturedModel.java} | 6 +- ...l.java => UnbakedMeshRetexturedModel.java} | 6 +- .../assets/templates/models/block/button.json | 44 ---- .../models/block/button_pressed.json | 44 ---- .../assets/templates/models/block/carpet.json | 48 ---- .../assets/templates/models/block/cube.json | 11 - .../templates/models/block/fence_gate.json | 112 -------- .../models/block/fence_gate_open.json | 100 ------- .../models/block/fence_gate_wall.json | 101 -------- .../models/block/fence_gate_wall_open.json | 101 -------- ...ce_post.json => fence_post_inventory.json} | 21 +- .../templates/models/block/fence_side.json | 68 ----- .../models/block/pressure_plate_down.json | 44 ---- .../models/block/pressure_plate_up.json | 44 ---- .../templates/models/block/slab_bottom.json | 48 ---- .../templates/models/block/slab_top.json | 48 ---- .../templates/models/block/wall_post.json | 40 --- .../templates/models/block/wall_side.json | 37 --- .../models/block/wall_side_tall.json | 37 --- .../models/item/button_inventory.json | 43 ---- .../models/item/fence_inventory.json | 243 ------------------ .../templates/models/item/wall_inventory.json | 91 ------- 25 files changed, 156 insertions(+), 1384 deletions(-) create mode 100644 src/main/java/io/github/cottonmc/templates/model/UnbakedAutoRetexturedModel.java rename src/main/java/io/github/cottonmc/templates/model/{RetexturedJsonModelUnbakedModel.java => UnbakedJsonRetexturedModel.java} (94%) rename src/main/java/io/github/cottonmc/templates/model/{RetexturedMeshUnbakedModel.java => UnbakedMeshRetexturedModel.java} (90%) delete mode 100644 src/main/resources/assets/templates/models/block/button.json delete mode 100644 src/main/resources/assets/templates/models/block/button_pressed.json delete mode 100644 src/main/resources/assets/templates/models/block/carpet.json delete mode 100644 src/main/resources/assets/templates/models/block/cube.json delete mode 100644 src/main/resources/assets/templates/models/block/fence_gate.json delete mode 100644 src/main/resources/assets/templates/models/block/fence_gate_open.json delete mode 100644 src/main/resources/assets/templates/models/block/fence_gate_wall.json delete mode 100644 src/main/resources/assets/templates/models/block/fence_gate_wall_open.json rename src/main/resources/assets/templates/models/block/{fence_post.json => fence_post_inventory.json} (54%) delete mode 100644 src/main/resources/assets/templates/models/block/fence_side.json delete mode 100644 src/main/resources/assets/templates/models/block/pressure_plate_down.json delete mode 100644 src/main/resources/assets/templates/models/block/pressure_plate_up.json delete mode 100644 src/main/resources/assets/templates/models/block/slab_bottom.json delete mode 100644 src/main/resources/assets/templates/models/block/slab_top.json delete mode 100644 src/main/resources/assets/templates/models/block/wall_post.json delete mode 100644 src/main/resources/assets/templates/models/block/wall_side.json delete mode 100644 src/main/resources/assets/templates/models/block/wall_side_tall.json delete mode 100644 src/main/resources/assets/templates/models/item/button_inventory.json delete mode 100644 src/main/resources/assets/templates/models/item/fence_inventory.json delete mode 100644 src/main/resources/assets/templates/models/item/wall_inventory.json diff --git a/README.md b/README.md index a3ffab6..4758fbe 100644 --- a/README.md +++ b/README.md @@ -30,56 +30,42 @@ The only other requirement is that your block *must* have a block entity that bo ## Creating the custom model -TL;DR: Look at `assets/templates/blockstates`, look at `assets/templates/models/block`, and look at the bottom of `TemplatesClient`. +(TL;DR look at `assets/templates/blockstates` and the bottom of `TemplatesClient`) -### Using a JSON model +To make a model retexturable, Templates has to know which faces you want to retexture, and which side of the block they correspond to. There are currently three ways to tell Templates your intentions: -We will construct a `RetexturedJsonModelUnbakedModel`. You need the ID of the json model to retexture. +### `UnbakedAutoRetexturedModel` -The base model can have a `parent` of anything you want. To make a surface retexturable, give it the texture `templates:templates_special/down`, `templates:templates_special/north`, `templates:templates_special/east` (etc). These textures will be *replaced* at runtime by the corresponding region of the corresponding texture of the template's theme block. (For example, a surface textured using `templates:templates_special/north` will look like the north side of the template's theme.) +Pass the ID of a JSON model to retexture. All quads that face east will be textured with the east side of the theme, all quads that face up will be textured with the top side of the theme, etc. There is no way to skip a face. -If possible, I don't recommend making a wholly *new* json model. If you have an existing model that defines `north`, `south`, `east` etc texture variables, just use this: +Most of Templates's blocks use this model. -```json -{ - "parent": "yourmod:your/cool/json/model", - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - } -} -``` +**TODO**: this does not work well with `multipart` models with differently-rotated parts, like the fence model (consisting of 1 fence post and 1 fence-side model that gets rotated around to fill all 4 sides) -(If your model has texture variables that look more like `up/down/side` instead of `up/down/north/south/east/west`, you *can* cheat and assign something like `templates:templates_special/east` to the `side` texture slot - but imagine a player retexturing your template to look like a sideways log, which is not rotationally symmetric. It won't work as expected.) +### `UnbakedJsonRetexturedModel` -Finally, if your base model is a multipart model, *and* you plan on using it as an item model, I need a representative blockstate in order to select the correct configuration of the base model. Pick one and pass it as the second parameter to `RetexturedJsonModelUnbakedModel`. If the base model is not a multipart model, this is not required. +Pass the ID of a JSON model to retexture. All quads textured with `templates:templates_special/east` will be textured with the east side of the theme, all quads textured with `templates:templates_special/up` will be retextured with the top side of the theme, etc. Quads textured with any other texture will be passed through unaltered. -That's all you need to construct a `RetexturedJsonModelUnbakedModel`, so to finish things off, [register it.](#registering-the-custom-model) +Templates's lever uses this model - `AutoRetexturedModel` was not appropriate because I did not want to retexture the lever arm. -### Using a custom `Mesh`-based model +(This works better with multipart models.) -If you have a shape in mind that can't be represented with a json model (like a perfect 45 degree wedge), this is a good option. +### `UnbakedMeshRetexturedModel` -We will construct a `RetexturedMeshUnbakedModel`. You need two things - the ID of a parent model, and a `Supplier<>` of a `Mesh` to retexture. +Pass either a `Supplier` or a `Function, Mesh>` (i.e. a function with an optional `Function` argument, and a return type of `Mesh`). All quads `.tag()`ged with `Direction.EAST.ordinal() + 1` will be textured with the east side of the theme, all quads tagged with `Direction.UP.ordinal() + 1` will be retextured with the top side of the theme, etc. Give these faces UV coordinates ranging from 0 to 1. -Ideally, the parent model should have a parent of `block/block`, or at least define *some* non-default rotations (smokey the bear voice *Only You Can Prevent Weirdly Rotated First-Person Models*) and set `"gui_light": "front"` (lest the item model look weird). You should use a json model for this, but keep in mind that no quads will be read from the json model - it's only used to source all the miscellaneous `BakedModel` options. +Quads with the tag `0` will be passed through unaltered (hence the `+ 1` bias), and they expect UV coordinates that already point to an appropriate region of the block atlas (which is where the `Function` argument comes in - query it for sprites and put their UV coordinates on the model) -When building the `Mesh`, if you want a face to be dynamically retextured, `.tag()` it with the `.ordinal() + 1` of the `Direction` it corresponds to, and give the face UV coordinates ranging from 0 to 1. (For example, if you tag a face with `3` (`Direction.NORTH.ordinal() + 1`), it will be retextured to the north side of the template's theme.) +(To construct this type, you will also need to pass the identifier of a "base model", which can be a regular JSON model. Miscellaneous `BakedModel` properties like rotations, AO, `isSideLit`, etc will be sourced from it.) -(TODO: implement a system for baking unchanging `Sprite`s onto the mesh, potentially by "registering" more tags; the problem is you don't have access to sprite uvs at mesh building time. Or just provide a way to get sprite UVs at mesh building time...?) +Templates's slope blocks use this model, because it's otherwise impossible to make triangle-shaped faces in a JSON model. -That's all you need in order to construct a `RetexturedMeshUnbakedModel`, so to finish things off, [register it.](#registering-the-custom-model) - -## Registering the custom model +## Registering your model 1. Decide on an ID for your special model that's *different* from the ID used for the base model. * If your base model lives at `yourmod:block/awesome_template`, something like `yourmod:awesome_template_special` would do. 2. Register it using `TemplatesClient.provider.addTemplateModel`. 3. Create a blockstate json for your block, and point it at the ID you decided for your special model in 1). - * You may rotate the blockmodel with the `x` and `y` properties. You can also toggle `uvlock`. Things should work as expected. + * You may use the `x`, `y`, and `uvlock` properties as normal. You may create a regular item model, or use ours by calling `TemplatesClient.provider.assignItemModel`, passing the ID of the special model & the items you want to assign it to. (The reason you have to do this instead of simply creating a regular item model and setting its `parent`, is that `JsonUnbakedModel`s can't have non-`JsonUnbakedModel`s as their `parent`, and even a trivial item model with only the `parent` field set counts as a `JsonUnbakedModel`. This isn't a problem for block models because blockstates are a layer of indirection before model loading.) \ No newline at end of file diff --git a/src/main/java/io/github/cottonmc/templates/TemplatesClient.java b/src/main/java/io/github/cottonmc/templates/TemplatesClient.java index 684af4e..6808fcb 100644 --- a/src/main/java/io/github/cottonmc/templates/TemplatesClient.java +++ b/src/main/java/io/github/cottonmc/templates/TemplatesClient.java @@ -1,7 +1,8 @@ package io.github.cottonmc.templates; -import io.github.cottonmc.templates.model.RetexturedJsonModelUnbakedModel; -import io.github.cottonmc.templates.model.RetexturedMeshUnbakedModel; +import io.github.cottonmc.templates.model.UnbakedAutoRetexturedModel; +import io.github.cottonmc.templates.model.UnbakedJsonRetexturedModel; +import io.github.cottonmc.templates.model.UnbakedMeshRetexturedModel; import io.github.cottonmc.templates.model.SlopeBaseMesh; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; @@ -57,42 +58,46 @@ public class TemplatesClient implements ClientModInitializer { BlockRenderLayerMap.INSTANCE.putBlocks(RenderLayer.getCutout(), Templates.BLOCKS.toArray(new Block[0])); - //vanilla style - provider.addTemplateModel(Templates.id("button_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/button"))); - provider.addTemplateModel(Templates.id("button_pressed_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/button_pressed"))); - provider.addTemplateModel(Templates.id("carpet_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/carpet"))); - provider.addTemplateModel(Templates.id("cube_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/cube"))); - provider.addTemplateModel(Templates.id("fence_post_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/fence_post"))); - provider.addTemplateModel(Templates.id("fence_side_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/fence_side"))); - provider.addTemplateModel(Templates.id("fence_gate_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/fence_gate"))); - provider.addTemplateModel(Templates.id("fence_gate_open_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/fence_gate_open"))); - provider.addTemplateModel(Templates.id("fence_gate_wall_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/fence_gate_wall"))); - provider.addTemplateModel(Templates.id("fence_gate_wall_open_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/fence_gate_wall_open"))); - provider.addTemplateModel(Templates.id("lever_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/lever"))); - provider.addTemplateModel(Templates.id("lever_on_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/lever_on"))); - provider.addTemplateModel(Templates.id("pressure_plate_up_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/pressure_plate_up"))); - provider.addTemplateModel(Templates.id("pressure_plate_down_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/pressure_plate_down"))); - provider.addTemplateModel(Templates.id("slab_bottom_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/slab_bottom"))); - provider.addTemplateModel(Templates.id("slab_top_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/slab_top"))); - provider.addTemplateModel(Templates.id("wall_post_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/wall_post"))); - provider.addTemplateModel(Templates.id("wall_side_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/wall_side"))); - provider.addTemplateModel(Templates.id("wall_side_tall_special"), new RetexturedJsonModelUnbakedModel(Templates.id("block/wall_side_tall"))); + //vanilla style models (using "auto" method) + provider.addTemplateModel(Templates.id("button_special"), new UnbakedAutoRetexturedModel(new Identifier("block/button"))); + provider.addTemplateModel(Templates.id("button_pressed_special"), new UnbakedAutoRetexturedModel(new Identifier("block/button_pressed"))); + provider.addTemplateModel(Templates.id("carpet_special"), new UnbakedAutoRetexturedModel(new Identifier("block/carpet"))); + provider.addTemplateModel(Templates.id("cube_special"), new UnbakedAutoRetexturedModel(new Identifier("block/cube"))); + provider.addTemplateModel(Templates.id("fence_post_special"), new UnbakedAutoRetexturedModel(new Identifier("block/fence_post"))); + provider.addTemplateModel(Templates.id("fence_side_special"), new UnbakedAutoRetexturedModel(new Identifier("block/fence_side"))); + provider.addTemplateModel(Templates.id("fence_gate_special"), new UnbakedAutoRetexturedModel(new Identifier("block/template_fence_gate"))); + provider.addTemplateModel(Templates.id("fence_gate_open_special"), new UnbakedAutoRetexturedModel(new Identifier("block/template_fence_gate_open"))); + provider.addTemplateModel(Templates.id("fence_gate_wall_special"), new UnbakedAutoRetexturedModel(new Identifier("block/template_fence_gate_wall"))); + provider.addTemplateModel(Templates.id("fence_gate_wall_open_special"), new UnbakedAutoRetexturedModel(new Identifier("block/template_fence_gate_wall_open"))); + provider.addTemplateModel(Templates.id("pressure_plate_up_special"), new UnbakedAutoRetexturedModel(new Identifier("block/pressure_plate_up"))); + provider.addTemplateModel(Templates.id("pressure_plate_down_special"), new UnbakedAutoRetexturedModel(new Identifier("block/pressure_plate_down"))); + provider.addTemplateModel(Templates.id("slab_bottom_special"), new UnbakedAutoRetexturedModel(new Identifier("block/slab"))); + provider.addTemplateModel(Templates.id("slab_top_special"), new UnbakedAutoRetexturedModel(new Identifier("block/slab_top"))); + provider.addTemplateModel(Templates.id("wall_post_special"), new UnbakedAutoRetexturedModel(new Identifier("block/template_wall_post"))); + provider.addTemplateModel(Templates.id("wall_side_special"), new UnbakedAutoRetexturedModel(new Identifier("block/template_wall_side"))); + provider.addTemplateModel(Templates.id("wall_side_tall_special"), new UnbakedAutoRetexturedModel(new Identifier("block/template_wall_side_tall"))); - //meshes - provider.addTemplateModel(Templates.id("slope_special"), new RetexturedMeshUnbakedModel(Templates.id("block/slope_base"), SlopeBaseMesh::make)); + //vanilla style models (using "special-sprite replacement" method) + provider.addTemplateModel(Templates.id("lever_special"), new UnbakedJsonRetexturedModel(Templates.id("block/lever"))); + provider.addTemplateModel(Templates.id("lever_on_special"), new UnbakedJsonRetexturedModel(Templates.id("block/lever_on"))); - //item only models -- TODO move to item/ prolly - provider.addTemplateModel(Templates.id("button_inventory_special"), new RetexturedJsonModelUnbakedModel(Templates.id("item/button_inventory"))); - provider.addTemplateModel(Templates.id("fence_inventory_special"), new RetexturedJsonModelUnbakedModel(Templates.id("item/fence_inventory"))); - provider.addTemplateModel(Templates.id("wall_inventory_special"), new RetexturedJsonModelUnbakedModel(Templates.id("item/wall_inventory"))); + //mesh models + provider.addTemplateModel(Templates.id("slope_special"), new UnbakedMeshRetexturedModel(Templates.id("block/slope_base"), SlopeBaseMesh::make)); - provider.assignItemModel(Templates.id("button_special"), Templates.BUTTON); + //item only models + provider.addTemplateModel(Templates.id("button_inventory_special"), new UnbakedAutoRetexturedModel(new Identifier("block/button_inventory"))); + provider.addTemplateModel(Templates.id("fence_inventory_special"), new UnbakedAutoRetexturedModel(new Identifier("block/fence_inventory"))); + provider.addTemplateModel(Templates.id("fence_post_inventory_special"), new UnbakedAutoRetexturedModel(Templates.id("block/fence_post_inventory"))); + provider.addTemplateModel(Templates.id("wall_inventory_special"), new UnbakedAutoRetexturedModel(new Identifier("block/wall_inventory"))); + + //item model assignments (in lieu of models/item/___.json) + provider.assignItemModel(Templates.id("button_inventory_special"), Templates.BUTTON); provider.assignItemModel(Templates.id("carpet_special"), Templates.CARPET); provider.assignItemModel(Templates.id("cube_special"), Templates.CUBE); provider.assignItemModel(Templates.id("fence_inventory_special"), Templates.FENCE); provider.assignItemModel(Templates.id("fence_gate_special"), Templates.FENCE_GATE); provider.assignItemModel(Templates.id("lever_special"), Templates.LEVER); //TODO vanilla uses its own item model - provider.assignItemModel(Templates.id("fence_post_special"), Templates.POST); + provider.assignItemModel(Templates.id("fence_post_inventory_special"), Templates.POST); provider.assignItemModel(Templates.id("pressure_plate_up_special"), Templates.PRESSURE_PLATE); provider.assignItemModel(Templates.id("slope_special"), Templates.SLOPE); provider.assignItemModel(Templates.id("slab_bottom_special"), Templates.SLAB); diff --git a/src/main/java/io/github/cottonmc/templates/model/UnbakedAutoRetexturedModel.java b/src/main/java/io/github/cottonmc/templates/model/UnbakedAutoRetexturedModel.java new file mode 100644 index 0000000..36432cb --- /dev/null +++ b/src/main/java/io/github/cottonmc/templates/model/UnbakedAutoRetexturedModel.java @@ -0,0 +1,90 @@ +package io.github.cottonmc.templates.model; + +import io.github.cottonmc.templates.TemplatesClient; +import net.fabricmc.fabric.api.renderer.v1.Renderer; +import net.fabricmc.fabric.api.renderer.v1.material.RenderMaterial; +import net.fabricmc.fabric.api.renderer.v1.mesh.Mesh; +import net.fabricmc.fabric.api.renderer.v1.mesh.MeshBuilder; +import net.fabricmc.fabric.api.renderer.v1.mesh.QuadEmitter; +import net.minecraft.block.BlockState; +import net.minecraft.block.Blocks; +import net.minecraft.client.render.model.BakedModel; +import net.minecraft.client.render.model.BakedQuad; +import net.minecraft.client.render.model.Baker; +import net.minecraft.client.render.model.ModelBakeSettings; +import net.minecraft.client.render.model.UnbakedModel; +import net.minecraft.client.texture.Sprite; +import net.minecraft.client.util.SpriteIdentifier; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.Direction; +import net.minecraft.util.math.random.Random; +import org.jetbrains.annotations.Nullable; + +import java.util.Collection; +import java.util.Collections; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; +import java.util.function.Function; + +public class UnbakedAutoRetexturedModel implements UnbakedModel { + public UnbakedAutoRetexturedModel(Identifier parent) { + this(parent, Blocks.AIR.getDefaultState()); + } + + public UnbakedAutoRetexturedModel(Identifier parent, BlockState itemModelState) { + this.parent = parent; + this.itemModelState = itemModelState; + } + + protected final Identifier parent; + protected final BlockState itemModelState; + + @Override + public Collection getModelDependencies() { + return Collections.singletonList(parent); + } + + @Override + public void setParents(Function function) { + function.apply(parent).setParents(function); + } + + @Nullable + @Override + public BakedModel bake(Baker baker, Function spriteLookup, ModelBakeSettings modelBakeSettings, Identifier identifier) { + ConcurrentMap jsonToMesh = new ConcurrentHashMap<>(); + + return new RetexturingBakedModel( + baker.bake(parent, modelBakeSettings), + TemplatesClient.provider.getOrCreateTemplateApperanceManager(spriteLookup), + modelBakeSettings, + itemModelState + ) { + @Override + protected Mesh getBaseMesh(BlockState state) { + //Convert models to retexturable Meshes lazily, the first time we encounter each blockstate + return jsonToMesh.computeIfAbsent(state, this::convertModel); + } + + private Mesh convertModel(BlockState state) { + Renderer r = TemplatesClient.getFabricRenderer(); + MeshBuilder builder = r.meshBuilder(); + QuadEmitter emitter = builder.getEmitter(); + RenderMaterial mat = tam.getCachedMaterial(state); + + Random rand = Random.create(42); + + for(Direction cullFace : DIRECTIONS_AND_NULL) { + for(BakedQuad quad : wrapped.getQuads(state, cullFace, rand)) { + emitter.fromVanilla(quad, mat, cullFace); + QuadUvBounds.read(emitter).normalizeUv(emitter, quad.getSprite()); + emitter.tag(emitter.lightFace().ordinal() + 1); + emitter.emit(); + } + } + + return builder.build(); + } + }; + } +} diff --git a/src/main/java/io/github/cottonmc/templates/model/RetexturedJsonModelUnbakedModel.java b/src/main/java/io/github/cottonmc/templates/model/UnbakedJsonRetexturedModel.java similarity index 94% rename from src/main/java/io/github/cottonmc/templates/model/RetexturedJsonModelUnbakedModel.java rename to src/main/java/io/github/cottonmc/templates/model/UnbakedJsonRetexturedModel.java index 8b995ac..d3ad6ac 100644 --- a/src/main/java/io/github/cottonmc/templates/model/RetexturedJsonModelUnbakedModel.java +++ b/src/main/java/io/github/cottonmc/templates/model/UnbakedJsonRetexturedModel.java @@ -29,12 +29,12 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.function.Function; -public class RetexturedJsonModelUnbakedModel implements UnbakedModel { - public RetexturedJsonModelUnbakedModel(Identifier parent) { +public class UnbakedJsonRetexturedModel implements UnbakedModel { + public UnbakedJsonRetexturedModel(Identifier parent) { this(parent, Blocks.AIR.getDefaultState()); } - public RetexturedJsonModelUnbakedModel(Identifier parent, BlockState itemModelState) { + public UnbakedJsonRetexturedModel(Identifier parent, BlockState itemModelState) { this.parent = parent; this.itemModelState = itemModelState; } diff --git a/src/main/java/io/github/cottonmc/templates/model/RetexturedMeshUnbakedModel.java b/src/main/java/io/github/cottonmc/templates/model/UnbakedMeshRetexturedModel.java similarity index 90% rename from src/main/java/io/github/cottonmc/templates/model/RetexturedMeshUnbakedModel.java rename to src/main/java/io/github/cottonmc/templates/model/UnbakedMeshRetexturedModel.java index e8108b0..7a46452 100644 --- a/src/main/java/io/github/cottonmc/templates/model/RetexturedMeshUnbakedModel.java +++ b/src/main/java/io/github/cottonmc/templates/model/UnbakedMeshRetexturedModel.java @@ -17,12 +17,12 @@ import java.util.Collections; import java.util.function.Function; import java.util.function.Supplier; -public class RetexturedMeshUnbakedModel implements UnbakedModel { - public RetexturedMeshUnbakedModel(Identifier parent, Supplier baseMeshFactory) { +public class UnbakedMeshRetexturedModel implements UnbakedModel { + public UnbakedMeshRetexturedModel(Identifier parent, Supplier baseMeshFactory) { this(parent, __ -> baseMeshFactory.get()); } - public RetexturedMeshUnbakedModel(Identifier parent, Function, Mesh> baseMeshFactory) { + public UnbakedMeshRetexturedModel(Identifier parent, Function, Mesh> baseMeshFactory) { this.parent = parent; this.baseMeshFactory = baseMeshFactory; } diff --git a/src/main/resources/assets/templates/models/block/button.json b/src/main/resources/assets/templates/models/block/button.json deleted file mode 100644 index 5aa8409..0000000 --- a/src/main/resources/assets/templates/models/block/button.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - }, - "elements": [ - { - "from": [5, 0, 6], - "to": [11, 2, 10], - "faces": { - "down": { - "uv": [5, 6, 11, 10], - "texture": "#down", - "cullface": "down" - }, - "up": { - "uv": [5, 6, 11, 10], - "texture": "#up" - }, - "north": { - "uv": [5, 14, 11, 16], - "texture": "#north" - }, - "south": { - "uv": [5, 14, 11, 16], - "texture": "#south" - }, - "west": { - "uv": [6, 14, 10, 16], - "texture": "#west" - }, - "east": { - "uv": [6, 14, 10, 16], - "texture": "#east" - } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/templates/models/block/button_pressed.json b/src/main/resources/assets/templates/models/block/button_pressed.json deleted file mode 100644 index 1fbc78e..0000000 --- a/src/main/resources/assets/templates/models/block/button_pressed.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - }, - "elements": [ - { - "from": [5, 0, 6], - "to": [11, 1.02, 10], - "faces": { - "down": { - "uv": [5, 6, 11, 10], - "texture": "#down", - "cullface": "down" - }, - "up": { - "uv": [5, 6, 11, 10], - "texture": "#up" - }, - "north": { - "uv": [5, 14, 11, 15], - "texture": "#north" - }, - "south": { - "uv": [5, 14, 11, 15], - "texture": "#south" - }, - "west": { - "uv": [6, 14, 10, 15], - "texture": "#west" - }, - "east": { - "uv": [6, 14, 10, 15], - "texture": "#east" - } - } - } - ] -} diff --git a/src/main/resources/assets/templates/models/block/carpet.json b/src/main/resources/assets/templates/models/block/carpet.json deleted file mode 100644 index a64bad0..0000000 --- a/src/main/resources/assets/templates/models/block/carpet.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "parent": "block/thin_block", - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 1, 16], - "faces": { - "down": { - "uv": [0, 0, 16, 16], - "texture": "#down", - "cullface": "down" - }, - "up": { - "uv": [0, 0, 16, 16], - "texture": "#up" - }, - "north": { - "uv": [0, 15, 16, 16], - "texture": "#north", - "cullface": "north" - }, - "south": { - "uv": [0, 15, 16, 16], - "texture": "#south", - "cullface": "south" - }, - "west": { - "uv": [0, 15, 16, 16], - "texture": "#west", - "cullface": "west" - }, - "east": { - "uv": [0, 15, 16, 16], - "texture": "#east", - "cullface": "east" - } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/templates/models/block/cube.json b/src/main/resources/assets/templates/models/block/cube.json deleted file mode 100644 index 5a4cec8..0000000 --- a/src/main/resources/assets/templates/models/block/cube.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "parent": "minecraft:block/cube", - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - } -} \ No newline at end of file diff --git a/src/main/resources/assets/templates/models/block/fence_gate.json b/src/main/resources/assets/templates/models/block/fence_gate.json deleted file mode 100644 index 275db27..0000000 --- a/src/main/resources/assets/templates/models/block/fence_gate.json +++ /dev/null @@ -1,112 +0,0 @@ -{ "parent": "block/block", - "display": { - "gui": { - "rotation": [ 30, 45, 0 ], - "translation": [ 0, -1, 0], - "scale":[ 0.8, 0.8, 0.8 ] - }, - "head": { - "rotation": [ 0, 0, 0 ], - "translation": [ 0, -3, -6], - "scale":[ 1, 1, 1] - } - }, - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - }, - "elements": [ - { "__comment": "Left-hand post", - "from": [ 0, 5, 7 ], - "to": [ 2, 16, 9 ], - "faces": { - "down": { "uv": [ 0, 7, 2, 9 ], "texture": "#down" }, - "up": { "uv": [ 0, 7, 2, 9 ], "texture": "#up" }, - "north": { "uv": [ 0, 0, 2, 11 ], "texture": "#north" }, - "south": { "uv": [ 0, 0, 2, 11 ], "texture": "#south" }, - "west": { "uv": [ 7, 0, 9, 11 ], "texture": "#west", "cullface": "west" }, - "east": { "uv": [ 7, 0, 9, 11 ], "texture": "#east" } - } - }, - { "__comment": "Right-hand post", - "from": [ 14, 5, 7 ], - "to": [ 16, 16, 9 ], - "faces": { - "down": { "uv": [ 14, 7, 16, 9 ], "texture": "#down" }, - "up": { "uv": [ 14, 7, 16, 9 ], "texture": "#up" }, - "north": { "uv": [ 14, 0, 16, 11 ], "texture": "#north" }, - "south": { "uv": [ 14, 0, 16, 11 ], "texture": "#south" }, - "west": { "uv": [ 7, 0, 9, 11 ], "texture": "#west" }, - "east": { "uv": [ 7, 0, 9, 11 ], "texture": "#east", "cullface": "east" } - } - }, - { "__comment": "Inner vertical post of left-hand gate door", - "from": [ 6, 6, 7 ], - "to": [ 8, 15, 9 ], - "faces": { - "down": { "uv": [ 6, 7, 8, 9 ], "texture": "#down" }, - "up": { "uv": [ 6, 7, 8, 9 ], "texture": "#up" }, - "north": { "uv": [ 6, 1, 8, 10 ], "texture": "#north" }, - "south": { "uv": [ 6, 1, 8, 10 ], "texture": "#south" }, - "west": { "uv": [ 7, 1, 9, 10 ], "texture": "#west" }, - "east": { "uv": [ 7, 1, 9, 10 ], "texture": "#east" } - } - }, - { "__comment": "Inner vertical post of right-hand gate door", - "from": [ 8, 6, 7 ], - "to": [ 10, 15, 9 ], - "faces": { - "down": { "uv": [ 8, 7, 10, 9 ], "texture": "#down" }, - "up": { "uv": [ 8, 7, 10, 9 ], "texture": "#up" }, - "north": { "uv": [ 8, 1, 10, 10 ], "texture": "#north" }, - "south": { "uv": [ 8, 1, 10, 10 ], "texture": "#south" }, - "west": { "uv": [ 7, 1, 9, 10 ], "texture": "#west" }, - "east": { "uv": [ 7, 1, 9, 10 ], "texture": "#east" } - } - }, - { "__comment": "Lower horizontal bar of left-hand gate door", - "from": [ 2, 6, 7 ], - "to": [ 6, 9, 9 ], - "faces": { - "down": { "uv": [ 2, 7, 6, 9 ], "texture": "#down" }, - "up": { "uv": [ 2, 7, 6, 9 ], "texture": "#up" }, - "north": { "uv": [ 2, 7, 6, 10 ], "texture": "#north" }, - "south": { "uv": [ 2, 7, 6, 10 ], "texture": "#south" } - } - }, - { "__comment": "Upper horizontal bar of left-hand gate door", - "from": [ 2, 12, 7 ], - "to": [ 6, 15, 9 ], - "faces": { - "down": { "uv": [ 2, 7, 6, 9 ], "texture": "#down" }, - "up": { "uv": [ 2, 7, 6, 9 ], "texture": "#up" }, - "north": { "uv": [ 2, 1, 6, 4 ], "texture": "#north" }, - "south": { "uv": [ 2, 1, 6, 4 ], "texture": "#south" } - } - }, - { "__comment": "Lower horizontal bar of right-hand gate door", - "from": [ 10, 6, 7 ], - "to": [ 14, 9, 9 ], - "faces": { - "down": { "uv": [ 10, 7, 14, 9 ], "texture": "#down" }, - "up": { "uv": [ 10, 7, 14, 9 ], "texture": "#up" }, - "north": { "uv": [ 10, 7, 14, 10 ], "texture": "#north" }, - "south": { "uv": [ 10, 7, 14, 10 ], "texture": "#south" } - } - }, - { "__comment": "Upper horizontal bar of right-hand gate door", - "from": [ 10, 12, 7 ], - "to": [ 14, 15, 9 ], - "faces": { - "down": { "uv": [ 10, 7, 14, 9 ], "texture": "#down" }, - "up": { "uv": [ 10, 7, 14, 9 ], "texture": "#up" }, - "north": { "uv": [ 10, 1, 14, 4 ], "texture": "#north" }, - "south": { "uv": [ 10, 1, 14, 4 ], "texture": "#south" } - } - } - ] -} diff --git a/src/main/resources/assets/templates/models/block/fence_gate_open.json b/src/main/resources/assets/templates/models/block/fence_gate_open.json deleted file mode 100644 index dfe6ac8..0000000 --- a/src/main/resources/assets/templates/models/block/fence_gate_open.json +++ /dev/null @@ -1,100 +0,0 @@ -{ - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - }, - "elements": [ - { "__comment": "Left-hand post", - "from": [ 0, 5, 7 ], - "to": [ 2, 16, 9 ], - "faces": { - "down": { "uv": [ 0, 7, 2, 9 ], "texture": "#down" }, - "up": { "uv": [ 0, 7, 2, 9 ], "texture": "#up" }, - "north": { "uv": [ 0, 0, 2, 11 ], "texture": "#north" }, - "south": { "uv": [ 0, 0, 2, 11 ], "texture": "#south" }, - "west": { "uv": [ 7, 0, 9, 11 ], "texture": "#west", "cullface": "west" }, - "east": { "uv": [ 7, 0, 9, 11 ], "texture": "#east" } - } - }, - { "__comment": "Right-hand post", - "from": [ 14, 5, 7 ], - "to": [ 16, 16, 9 ], - "faces": { - "down": { "uv": [ 14, 7, 16, 9 ], "texture": "#down" }, - "up": { "uv": [ 14, 7, 16, 9 ], "texture": "#up" }, - "north": { "uv": [ 14, 0, 16, 11 ], "texture": "#north" }, - "south": { "uv": [ 14, 0, 16, 11 ], "texture": "#south" }, - "west": { "uv": [ 7, 0, 9, 11 ], "texture": "#west" }, - "east": { "uv": [ 7, 0, 9, 11 ], "texture": "#east", "cullface": "east" } - } - }, - { "__comment": "Inner vertical post of left-hand gate door", - "from": [ 0, 6, 13 ], - "to": [ 2, 15, 15 ], - "faces": { - "down": { "uv": [ 0, 13, 2, 15 ], "texture": "#down" }, - "up": { "uv": [ 0, 13, 2, 15 ], "texture": "#up" }, - "north": { "uv": [ 0, 1, 2, 10 ], "texture": "#north" }, - "south": { "uv": [ 0, 1, 2, 10 ], "texture": "#south" }, - "west": { "uv": [ 13, 1, 15, 10 ], "texture": "#west" }, - "east": { "uv": [ 13, 1, 15, 10 ], "texture": "#east" } - } - }, - { "__comment": "Inner vertical post of right-hand gate door", - "from": [ 14, 6, 13 ], - "to": [ 16, 15, 15 ], - "faces": { - "down": { "uv": [ 14, 13, 16, 15 ], "texture": "#down" }, - "up": { "uv": [ 14, 13, 16, 15 ], "texture": "#up" }, - "north": { "uv": [ 14, 1, 16, 10 ], "texture": "#north" }, - "south": { "uv": [ 14, 1, 16, 10 ], "texture": "#south" }, - "west": { "uv": [ 13, 1, 15, 10 ], "texture": "#west" }, - "east": { "uv": [ 13, 1, 15, 10 ], "texture": "#east" } - } - }, - { "__comment": "Lower horizontal bar of left-hand gate door", - "from": [ 0, 6, 9 ], - "to": [ 2, 9, 13 ], - "faces": { - "down": { "uv": [ 0, 9, 2, 13 ], "texture": "#down" }, - "up": { "uv": [ 0, 9, 2, 13 ], "texture": "#up" }, - "west": { "uv": [ 13, 7, 15, 10 ], "texture": "#north" }, - "east": { "uv": [ 13, 7, 15, 10 ], "texture": "#south" } - } - }, - { "__comment": "Upper horizontal bar of left-hand gate door", - "from": [ 0, 12, 9 ], - "to": [ 2, 15, 13 ], - "faces": { - "down": { "uv": [ 0, 9, 2, 13 ], "texture": "#down" }, - "up": { "uv": [ 0, 9, 2, 13 ], "texture": "#up" }, - "west": { "uv": [ 13, 1, 15, 4 ], "texture": "#north" }, - "east": { "uv": [ 13, 1, 15, 4 ], "texture": "#south" } - } - }, - { "__comment": "Lower horizontal bar of left-hand gate door", - "from": [ 14, 6, 9 ], - "to": [ 16, 9, 13 ], - "faces": { - "down": { "uv": [ 14, 9, 16, 13 ], "texture": "#down" }, - "up": { "uv": [ 14, 9, 16, 13 ], "texture": "#up" }, - "west": { "uv": [ 13, 7, 15, 10 ], "texture": "#north" }, - "east": { "uv": [ 13, 7, 15, 10 ], "texture": "#south" } - } - }, - { "__comment": "Upper horizontal bar of left-hand gate door", - "from": [ 14, 12, 9 ], - "to": [ 16, 15, 13 ], - "faces": { - "down": { "uv": [ 14, 9, 16, 13 ], "texture": "#down" }, - "up": { "uv": [ 14, 9, 16, 13 ], "texture": "#up" }, - "west": { "uv": [ 13, 1, 15, 4 ], "texture": "#north" }, - "east": { "uv": [ 13, 1, 15, 4 ], "texture": "#south" } - } - } - ] -} diff --git a/src/main/resources/assets/templates/models/block/fence_gate_wall.json b/src/main/resources/assets/templates/models/block/fence_gate_wall.json deleted file mode 100644 index a900283..0000000 --- a/src/main/resources/assets/templates/models/block/fence_gate_wall.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "ambientocclusion": true, - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - }, - "elements": [ - { "__comment": "Left-hand post", - "from": [ 0, 2, 7 ], - "to": [ 2, 13, 9 ], - "faces": { - "down": { "uv": [ 0, 7, 2, 9 ], "texture": "#down" }, - "up": { "uv": [ 0, 7, 2, 9 ], "texture": "#up" }, - "north": { "uv": [ 0, 0, 2, 11 ], "texture": "#north" }, - "south": { "uv": [ 0, 0, 2, 11 ], "texture": "#south" }, - "west": { "uv": [ 7, 0, 9, 11 ], "texture": "#west", "cullface": "west" }, - "east": { "uv": [ 7, 0, 9, 11 ], "texture": "#east" } - } - }, - { "__comment": "Right-hand post", - "from": [ 14, 2, 7 ], - "to": [ 16, 13, 9 ], - "faces": { - "down": { "uv": [ 14, 7, 16, 9 ], "texture": "#down" }, - "up": { "uv": [ 14, 7, 16, 9 ], "texture": "#up" }, - "north": { "uv": [ 14, 0, 16, 11 ], "texture": "#north" }, - "south": { "uv": [ 14, 0, 16, 11 ], "texture": "#south" }, - "west": { "uv": [ 7, 0, 9, 11 ], "texture": "#west" }, - "east": { "uv": [ 7, 0, 9, 11 ], "texture": "#east", "cullface": "east" } - } - }, - { "__comment": "Inner vertical post of left-hand gate door", - "from": [ 6, 3, 7 ], - "to": [ 8, 12, 9 ], - "faces": { - "down": { "uv": [ 6, 7, 8, 9 ], "texture": "#down" }, - "up": { "uv": [ 6, 7, 8, 9 ], "texture": "#up" }, - "north": { "uv": [ 6, 1, 8, 10 ], "texture": "#north" }, - "south": { "uv": [ 6, 1, 8, 10 ], "texture": "#south" }, - "west": { "uv": [ 7, 1, 9, 10 ], "texture": "#west" }, - "east": { "uv": [ 7, 1, 9, 10 ], "texture": "#east" } - } - }, - { "__comment": "Inner vertical post of right-hand gate door", - "from": [ 8, 3, 7 ], - "to": [ 10, 12, 9 ], - "faces": { - "down": { "uv": [ 8, 7, 10, 9 ], "texture": "#down" }, - "up": { "uv": [ 8, 7, 10, 9 ], "texture": "#up" }, - "north": { "uv": [ 8, 1, 10, 10 ], "texture": "#north" }, - "south": { "uv": [ 8, 1, 10, 10 ], "texture": "#south" }, - "west": { "uv": [ 7, 1, 9, 10 ], "texture": "#west" }, - "east": { "uv": [ 7, 1, 9, 10 ], "texture": "#east" } - } - }, - { "__comment": "Lower horizontal bar of left-hand gate door", - "from": [ 2, 3, 7 ], - "to": [ 6, 6, 9 ], - "faces": { - "down": { "uv": [ 2, 7, 6, 9 ], "texture": "#down" }, - "up": { "uv": [ 2, 7, 6, 9 ], "texture": "#up" }, - "north": { "uv": [ 2, 7, 6, 10 ], "texture": "#north" }, - "south": { "uv": [ 2, 7, 6, 10 ], "texture": "#south" } - } - }, - { "__comment": "Upper horizontal bar of left-hand gate door", - "from": [ 2, 9, 7 ], - "to": [ 6, 12, 9 ], - "faces": { - "down": { "uv": [ 2, 7, 6, 9 ], "texture": "#down" }, - "up": { "uv": [ 2, 7, 6, 9 ], "texture": "#up" }, - "north": { "uv": [ 2, 1, 6, 4 ], "texture": "#north" }, - "south": { "uv": [ 2, 1, 6, 4 ], "texture": "#south" } - } - }, - { "__comment": "Lower horizontal bar of right-hand gate door", - "from": [ 10, 3, 7 ], - "to": [ 14, 6, 9 ], - "faces": { - "down": { "uv": [ 10, 7, 14, 9 ], "texture": "#down" }, - "up": { "uv": [ 10, 7, 14, 9 ], "texture": "#up" }, - "north": { "uv": [ 10, 7, 14, 10 ], "texture": "#north" }, - "south": { "uv": [ 10, 7, 14, 10 ], "texture": "#south" } - } - }, - { "__comment": "Upper horizontal bar of right-hand gate door", - "from": [ 10, 9, 7 ], - "to": [ 14, 12, 9 ], - "faces": { - "down": { "uv": [ 10, 7, 14, 9 ], "texture": "#down" }, - "up": { "uv": [ 10, 7, 14, 9 ], "texture": "#up" }, - "north": { "uv": [ 10, 1, 14, 4 ], "texture": "#north" }, - "south": { "uv": [ 10, 1, 14, 4 ], "texture": "#south" } - } - } - ] -} diff --git a/src/main/resources/assets/templates/models/block/fence_gate_wall_open.json b/src/main/resources/assets/templates/models/block/fence_gate_wall_open.json deleted file mode 100644 index a45b9f1..0000000 --- a/src/main/resources/assets/templates/models/block/fence_gate_wall_open.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "ambientocclusion": true, - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - }, - "elements": [ - { "__comment": "Left-hand post", - "from": [ 0, 2, 7 ], - "to": [ 2, 13, 9 ], - "faces": { - "down": { "uv": [ 0, 7, 2, 9 ], "texture": "#down" }, - "up": { "uv": [ 0, 7, 2, 9 ], "texture": "#up" }, - "north": { "uv": [ 0, 0, 2, 11 ], "texture": "#north" }, - "south": { "uv": [ 0, 0, 2, 11 ], "texture": "#south" }, - "west": { "uv": [ 7, 0, 9, 11 ], "texture": "#west", "cullface": "west" }, - "east": { "uv": [ 7, 0, 9, 11 ], "texture": "#east" } - } - }, - { "__comment": "Right-hand post", - "from": [ 14, 2, 7 ], - "to": [ 16, 13, 9 ], - "faces": { - "down": { "uv": [ 14, 7, 16, 9 ], "texture": "#down" }, - "up": { "uv": [ 14, 7, 16, 9 ], "texture": "#up" }, - "north": { "uv": [ 14, 0, 16, 11 ], "texture": "#north" }, - "south": { "uv": [ 14, 0, 16, 11 ], "texture": "#south" }, - "west": { "uv": [ 7, 0, 9, 11 ], "texture": "#west" }, - "east": { "uv": [ 7, 0, 9, 11 ], "texture": "#east", "cullface": "east" } - } - }, - { "__comment": "Inner vertical post of left-hand gate door", - "from": [ 0, 3, 13 ], - "to": [ 2, 12, 15 ], - "faces": { - "down": { "uv": [ 0, 13, 2, 15 ], "texture": "#down" }, - "up": { "uv": [ 0, 13, 2, 15 ], "texture": "#up" }, - "north": { "uv": [ 0, 1, 2, 10 ], "texture": "#north" }, - "south": { "uv": [ 0, 1, 2, 10 ], "texture": "#south" }, - "west": { "uv": [ 13, 1, 15, 10 ], "texture": "#west" }, - "east": { "uv": [ 13, 1, 15, 10 ], "texture": "#east" } - } - }, - { "__comment": "Inner vertical post of right-hand gate door", - "from": [ 14, 3, 13 ], - "to": [ 16, 12, 15 ], - "faces": { - "down": { "uv": [ 14, 13, 16, 15 ], "texture": "#down" }, - "up": { "uv": [ 14, 13, 16, 15 ], "texture": "#up" }, - "north": { "uv": [ 14, 1, 16, 10 ], "texture": "#north" }, - "south": { "uv": [ 14, 1, 16, 10 ], "texture": "#south" }, - "west": { "uv": [ 13, 1, 15, 10 ], "texture": "#west" }, - "east": { "uv": [ 13, 1, 15, 10 ], "texture": "#east" } - } - }, - { "__comment": "Lower horizontal bar of left-hand gate door", - "from": [ 0, 3, 9 ], - "to": [ 2, 6, 13 ], - "faces": { - "down": { "uv": [ 0, 9, 2, 13 ], "texture": "#down" }, - "up": { "uv": [ 0, 9, 2, 13 ], "texture": "#up" }, - "west": { "uv": [ 13, 7, 15, 10 ], "texture": "#north" }, - "east": { "uv": [ 13, 7, 15, 10 ], "texture": "#south" } - } - }, - { "__comment": "Upper horizontal bar of left-hand gate door", - "from": [ 0, 9, 9 ], - "to": [ 2, 12, 13 ], - "faces": { - "down": { "uv": [ 0, 9, 2, 13 ], "texture": "#down" }, - "up": { "uv": [ 0, 9, 2, 13 ], "texture": "#up" }, - "west": { "uv": [ 13, 1, 15, 4 ], "texture": "#north" }, - "east": { "uv": [ 13, 1, 15, 4 ], "texture": "#south" } - } - }, - { "__comment": "Lower horizontal bar of left-hand gate door", - "from": [ 14, 3, 9 ], - "to": [ 16, 6, 13 ], - "faces": { - "down": { "uv": [ 14, 9, 16, 13 ], "texture": "#down" }, - "up": { "uv": [ 14, 9, 16, 13 ], "texture": "#up" }, - "west": { "uv": [ 13, 7, 15, 10 ], "texture": "#north" }, - "east": { "uv": [ 13, 7, 15, 10 ], "texture": "#south" } - } - }, - { "__comment": "Upper horizontal bar of left-hand gate door", - "from": [ 14, 9, 9 ], - "to": [ 16, 12, 13 ], - "faces": { - "down": { "uv": [ 14, 9, 16, 13 ], "texture": "#down" }, - "up": { "uv": [ 14, 9, 16, 13 ], "texture": "#up" }, - "west": { "uv": [ 13, 1, 15, 4 ], "texture": "#north" }, - "east": { "uv": [ 13, 1, 15, 4 ], "texture": "#south" } - } - } - ] -} diff --git a/src/main/resources/assets/templates/models/block/fence_post.json b/src/main/resources/assets/templates/models/block/fence_post_inventory.json similarity index 54% rename from src/main/resources/assets/templates/models/block/fence_post.json rename to src/main/resources/assets/templates/models/block/fence_post_inventory.json index b182901..dd6f212 100644 --- a/src/main/resources/assets/templates/models/block/fence_post.json +++ b/src/main/resources/assets/templates/models/block/fence_post_inventory.json @@ -1,12 +1,7 @@ { "parent": "minecraft:block/block", "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" + "particle": "#texture" }, "elements": [ { @@ -15,32 +10,32 @@ "faces": { "down": { "uv": [6, 6, 10, 10], - "texture": "#down", + "texture": "#texture", "cullface": "down" }, "up": { "uv": [6, 6, 10, 10], - "texture": "#up", + "texture": "#texture", "cullface": "up" }, "north": { "uv": [6, 0, 10, 16], - "texture": "#north" + "texture": "#texture" }, "south": { "uv": [6, 0, 10, 16], - "texture": "#south" + "texture": "#texture" }, "west": { "uv": [6, 0, 10, 16], - "texture": "#west" + "texture": "#texture" }, "east": { "uv": [6, 0, 10, 16], - "texture": "#east" + "texture": "#texture" } }, "__comment": "Center post" } ] -} +} \ No newline at end of file diff --git a/src/main/resources/assets/templates/models/block/fence_side.json b/src/main/resources/assets/templates/models/block/fence_side.json deleted file mode 100644 index 9d76779..0000000 --- a/src/main/resources/assets/templates/models/block/fence_side.json +++ /dev/null @@ -1,68 +0,0 @@ -{ - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - }, - "elements": [ - { - "from": [7, 12, 0], - "to": [9, 15, 9], - "faces": { - "down": { - "uv": [7, 0, 9, 9], - "texture": "#down" - }, - "up": { - "uv": [7, 0, 9, 9], - "texture": "#up" - }, - "north": { - "uv": [7, 1, 9, 4], - "texture": "#north", - "cullface": "north" - }, - "west": { - "uv": [0, 1, 9, 4], - "texture": "#west" - }, - "east": { - "uv": [0, 1, 9, 4], - "texture": "#east" - } - }, - "__comment": "top bar" - }, - { - "from": [7, 6, 0], - "to": [9, 9, 9], - "faces": { - "down": { - "uv": [7, 0, 9, 9], - "texture": "#down" - }, - "up": { - "uv": [7, 0, 9, 9], - "texture": "#up" - }, - "north": { - "uv": [7, 7, 9, 10], - "texture": "#north", - "cullface": "north" - }, - "west": { - "uv": [0, 7, 9, 10], - "texture": "#west" - }, - "east": { - "uv": [0, 7, 9, 10], - "texture": "#east" - } - }, - "__comment": "lower bar" - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/templates/models/block/pressure_plate_down.json b/src/main/resources/assets/templates/models/block/pressure_plate_down.json deleted file mode 100644 index 186a491..0000000 --- a/src/main/resources/assets/templates/models/block/pressure_plate_down.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "parent": "minecraft:block/thin_block", - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - }, - "elements": [ - { - "from": [1, 0, 1], - "to": [15, 0.5, 15], - "faces": { - "down": { - "uv": [1, 1, 15, 15], - "texture": "#down", - "cullface": "down" - }, - "up": { - "uv": [1, 1, 15, 15], - "texture": "#up" - }, - "north": { - "uv": [1, 15, 15, 15.5], - "texture": "#north" - }, - "south": { - "uv": [1, 15, 15, 15.5], - "texture": "#south" - }, - "west": { - "uv": [1, 15, 15, 15.5], - "texture": "#west" - }, - "east": { - "uv": [1, 15, 15, 15.5], - "texture": "#east" - } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/templates/models/block/pressure_plate_up.json b/src/main/resources/assets/templates/models/block/pressure_plate_up.json deleted file mode 100644 index 1987c1f..0000000 --- a/src/main/resources/assets/templates/models/block/pressure_plate_up.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "parent": "minecraft:block/thin_block", - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - }, - "elements": [ - { - "from": [1, 0, 1], - "to": [15, 1, 15], - "faces": { - "down": { - "uv": [1, 1, 15, 15], - "texture": "#down", - "cullface": "down" - }, - "up": { - "uv": [1, 1, 15, 15], - "texture": "#up" - }, - "north": { - "uv": [1, 15, 15, 16], - "texture": "#north" - }, - "south": { - "uv": [1, 15, 15, 16], - "texture": "#south" - }, - "west": { - "uv": [1, 15, 15, 16], - "texture": "#west" - }, - "east": { - "uv": [1, 15, 15, 16], - "texture": "#east" - } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/templates/models/block/slab_bottom.json b/src/main/resources/assets/templates/models/block/slab_bottom.json deleted file mode 100644 index 6263a74..0000000 --- a/src/main/resources/assets/templates/models/block/slab_bottom.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - }, - "elements": [ - { - "from": [0, 0, 0], - "to": [16, 8, 16], - "faces": { - "down": { - "uv": [0, 0, 16, 16], - "texture": "#down", - "cullface": "down" - }, - "up": { - "uv": [0, 0, 16, 16], - "texture": "#up" - }, - "north": { - "uv": [0, 8, 16, 16], - "texture": "#north", - "cullface": "north" - }, - "south": { - "uv": [0, 8, 16, 16], - "texture": "#south", - "cullface": "south" - }, - "west": { - "uv": [0, 8, 16, 16], - "texture": "#west", - "cullface": "west" - }, - "east": { - "uv": [0, 8, 16, 16], - "texture": "#east", - "cullface": "east" - } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/templates/models/block/slab_top.json b/src/main/resources/assets/templates/models/block/slab_top.json deleted file mode 100644 index bed7609..0000000 --- a/src/main/resources/assets/templates/models/block/slab_top.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - }, - "elements": [ - { - "from": [0, 8, 0], - "to": [16, 16, 16], - "faces": { - "down": { - "uv": [0, 0, 16, 16], - "texture": "#down" - }, - "up": { - "uv": [0, 0, 16, 16], - "texture": "#up", - "cullface": "up" - }, - "north": { - "uv": [0, 0, 16, 8], - "texture": "#north", - "cullface": "north" - }, - "south": { - "uv": [0, 0, 16, 8], - "texture": "#south", - "cullface": "south" - }, - "west": { - "uv": [0, 0, 16, 8], - "texture": "#west", - "cullface": "west" - }, - "east": { - "uv": [0, 0, 16, 8], - "texture": "#east", - "cullface": "east" - } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/templates/models/block/wall_post.json b/src/main/resources/assets/templates/models/block/wall_post.json deleted file mode 100644 index a1c67ff..0000000 --- a/src/main/resources/assets/templates/models/block/wall_post.json +++ /dev/null @@ -1,40 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - }, - "elements": [ - { - "from": [4, 0, 4], - "to": [12, 16, 12], - "faces": { - "down": { - "texture": "#down", - "cullface": "down" - }, - "up": { - "texture": "#up", - "cullface": "up" - }, - "north": { - "texture": "#north" - }, - "south": { - "texture": "#south" - }, - "west": { - "texture": "#west" - }, - "east": { - "texture": "#east" - } - }, - "__comment": "Center post" - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/templates/models/block/wall_side.json b/src/main/resources/assets/templates/models/block/wall_side.json deleted file mode 100644 index e609034..0000000 --- a/src/main/resources/assets/templates/models/block/wall_side.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - }, - "elements": [ - { - "from": [5, 0, 0], - "to": [11, 14, 8], - "faces": { - "down": { - "texture": "#down", - "cullface": "down" - }, - "up": { - "texture": "#up" - }, - "north": { - "texture": "#north", - "cullface": "north" - }, - "west": { - "texture": "#west" - }, - "east": { - "texture": "#east" - } - }, - "__comment": "wall" - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/templates/models/block/wall_side_tall.json b/src/main/resources/assets/templates/models/block/wall_side_tall.json deleted file mode 100644 index 24b29ad..0000000 --- a/src/main/resources/assets/templates/models/block/wall_side_tall.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - }, - "elements": [ - { - "from": [5, 0, 0], - "to": [11, 16, 8], - "faces": { - "down": { - "texture": "#down", - "cullface": "down" - }, - "up": { - "texture": "#up", - "cullface": "up" - }, - "north": { - "texture": "#north", - "cullface": "north" - }, - "west": { - "texture": "#west" - }, - "east": { - "texture": "#east" - } - } - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/templates/models/item/button_inventory.json b/src/main/resources/assets/templates/models/item/button_inventory.json deleted file mode 100644 index 74d86c9..0000000 --- a/src/main/resources/assets/templates/models/item/button_inventory.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - }, - "elements": [ - { - "from": [5, 6, 6], - "to": [11, 10, 10], - "faces": { - "down": { - "uv": [5, 6, 11, 10], - "texture": "#down" - }, - "up": { - "uv": [5, 10, 11, 6], - "texture": "#up" - }, - "north": { - "uv": [5, 12, 11, 16], - "texture": "#north" - }, - "south": { - "uv": [5, 12, 11, 16], - "texture": "#south" - }, - "west": { - "uv": [6, 12, 10, 16], - "texture": "#west" - }, - "east": { - "uv": [6, 12, 10, 16], - "texture": "#east" - } - } - } - ] -} diff --git a/src/main/resources/assets/templates/models/item/fence_inventory.json b/src/main/resources/assets/templates/models/item/fence_inventory.json deleted file mode 100644 index fc199a2..0000000 --- a/src/main/resources/assets/templates/models/item/fence_inventory.json +++ /dev/null @@ -1,243 +0,0 @@ -{ - "parent": "minecraft:block/block", - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - }, - "display": { - "gui": { - "rotation": [30, 135, 0], - "translation": [0, 0, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 90, 0], - "translation": [0, 0, 0], - "scale": [0.5, 0.5, 0.5] - } - }, - "elements": [ - { - "from": [6, 0, 0], - "to": [10, 16, 4], - "faces": { - "down": { - "uv": [6, 0, 10, 4], - "texture": "#down", - "cullface": "down" - }, - "up": { - "uv": [6, 0, 10, 4], - "texture": "#up" - }, - "north": { - "uv": [6, 0, 10, 16], - "texture": "#north" - }, - "south": { - "uv": [6, 0, 10, 16], - "texture": "#south" - }, - "west": { - "uv": [0, 0, 4, 16], - "texture": "#west" - }, - "east": { - "uv": [0, 0, 4, 16], - "texture": "#east" - } - }, - "__comment": "Left post" - }, - { - "from": [6, 0, 12], - "to": [10, 16, 16], - "faces": { - "down": { - "uv": [6, 12, 10, 16], - "texture": "#down", - "cullface": "down" - }, - "up": { - "uv": [6, 12, 10, 16], - "texture": "#up" - }, - "north": { - "uv": [6, 0, 10, 16], - "texture": "#north" - }, - "south": { - "uv": [6, 0, 10, 16], - "texture": "#south" - }, - "west": { - "uv": [12, 0, 16, 16], - "texture": "#west" - }, - "east": { - "uv": [12, 0, 16, 16], - "texture": "#east" - } - }, - "__comment": "Right post" - }, - { - "from": [7, 12, 0], - "to": [9, 15, 16], - "faces": { - "down": { - "uv": [7, 0, 9, 16], - "texture": "#down" - }, - "up": { - "uv": [7, 0, 9, 16], - "texture": "#up" - }, - "west": { - "uv": [0, 1, 16, 4], - "texture": "#west" - }, - "east": { - "uv": [0, 1, 16, 4], - "texture": "#east" - } - }, - "__comment": "Top bar" - }, - { - "from": [7, 12, -2], - "to": [9, 15, 0], - "faces": { - "down": { - "uv": [7, 0, 9, 2], - "texture": "#down" - }, - "up": { - "uv": [7, 14, 9, 16], - "texture": "#up" - }, - "north": { - "uv": [7, 1, 9, 4], - "texture": "#north" - }, - "west": { - "uv": [14, 1, 16, 4], - "texture": "#west" - }, - "east": { - "uv": [0, 1, 2, 4], - "texture": "#east" - } - }, - "__comment": "Top bar left" - }, - { - "from": [7, 12, 16], - "to": [9, 15, 18], - "faces": { - "down": { - "uv": [7, 14, 9, 16], - "texture": "#down" - }, - "up": { - "uv": [7, 0, 9, 2], - "texture": "#up" - }, - "south": { - "uv": [7, 1, 9, 4], - "texture": "#south" - }, - "west": { - "uv": [0, 1, 2, 4], - "texture": "#west" - }, - "east": { - "uv": [14, 1, 16, 4], - "texture": "#east" - } - }, - "__comment": "Top bar right" - }, - { - "from": [7, 6, 0], - "to": [9, 9, 16], - "faces": { - "down": { - "uv": [7, 0, 9, 16], - "texture": "#down" - }, - "up": { - "uv": [7, 0, 9, 16], - "texture": "#up" - }, - "west": { - "uv": [0, 7, 16, 10], - "texture": "#west" - }, - "east": { - "uv": [0, 7, 16, 10], - "texture": "#east" - } - }, - "__comment": "Lower bar" - }, - { - "from": [7, 6, -2], - "to": [9, 9, 0], - "faces": { - "down": { - "uv": [7, 0, 9, 2], - "texture": "#down" - }, - "up": { - "uv": [7, 14, 9, 16], - "texture": "#up" - }, - "north": { - "uv": [7, 7, 9, 10], - "texture": "#north" - }, - "west": { - "uv": [14, 7, 16, 10], - "texture": "#west" - }, - "east": { - "uv": [0, 7, 2, 10], - "texture": "#east" - } - }, - "__comment": "Lower bar left" - }, - { - "from": [7, 6, 16], - "to": [9, 9, 18], - "faces": { - "down": { - "uv": [7, 14, 9, 16], - "texture": "#down" - }, - "up": { - "uv": [7, 0, 9, 2], - "texture": "#up" - }, - "south": { - "uv": [7, 7, 9, 10], - "texture": "#south" - }, - "west": { - "uv": [0, 7, 2, 10], - "texture": "#west" - }, - "east": { - "uv": [14, 7, 16, 10], - "texture": "#east" - } - }, - "__comment": "Lower bar right" - } - ] -} \ No newline at end of file diff --git a/src/main/resources/assets/templates/models/item/wall_inventory.json b/src/main/resources/assets/templates/models/item/wall_inventory.json deleted file mode 100644 index 57bb3e0..0000000 --- a/src/main/resources/assets/templates/models/item/wall_inventory.json +++ /dev/null @@ -1,91 +0,0 @@ -{ - "parent": "block/block", - "textures": { - "down": "templates:templates_special/down", - "up": "templates:templates_special/up", - "north": "templates:templates_special/north", - "south": "templates:templates_special/south", - "west": "templates:templates_special/west", - "east": "templates:templates_special/east" - }, - "display": { - "gui": { - "rotation": [30, 135, 0], - "translation": [0, 0, 0], - "scale": [0.625, 0.625, 0.625] - }, - "fixed": { - "rotation": [0, 90, 0], - "translation": [0, 0, 0], - "scale": [0.5, 0.5, 0.5] - } - }, - "elements": [ - { - "from": [4, 0, 4], - "to": [12, 16, 12], - "faces": { - "down": { - "uv": [4, 4, 12, 12], - "texture": "#down", - "cullface": "down" - }, - "up": { - "uv": [4, 4, 12, 12], - "texture": "#up" - }, - "north": { - "uv": [4, 0, 12, 16], - "texture": "#north" - }, - "south": { - "uv": [4, 0, 12, 16], - "texture": "#south" - }, - "west": { - "uv": [4, 0, 12, 16], - "texture": "#west" - }, - "east": { - "uv": [4, 0, 12, 16], - "texture": "#east" - } - }, - "__comment": "Center post" - }, - { - "from": [5, 0, 0], - "to": [11, 13, 16], - "faces": { - "down": { - "uv": [5, 0, 11, 16], - "texture": "#down", - "cullface": "down" - }, - "up": { - "uv": [5, 0, 11, 16], - "texture": "#up" - }, - "north": { - "uv": [5, 3, 11, 16], - "texture": "#north", - "cullface": "north" - }, - "south": { - "uv": [5, 3, 11, 16], - "texture": "#south", - "cullface": "south" - }, - "west": { - "uv": [0, 3, 16, 16], - "texture": "#west" - }, - "east": { - "uv": [0, 3, 16, 16], - "texture": "#east" - } - }, - "__comment": "Full wall" - } - ] -} \ No newline at end of file