From 59fe3183b0041935d71da4f65bf8b4b45e6b3668 Mon Sep 17 00:00:00 2001 From: Aleksey Date: Sun, 11 Oct 2020 20:17:08 +0300 Subject: [PATCH] Try custom slab model. Json patterns. --- json/block/%name%.json | 6 + json/block/%name%_brick_half_slab.json | 8 + json/block/%name%_brick_inner_stairs.json | 8 + json/block/%name%_brick_outer_stairs.json | 8 + json/block/%name%_brick_stairs.json | 8 + json/block/%name%_brick_wall_inventory.json | 6 + json/block/%name%_brick_wall_post.json | 6 + json/block/%name%_brick_wall_side.json | 6 + json/block/%name%_brick_wall_side_tall.json | 6 + json/block/%name%_bricks.json | 6 + json/block/%name%_button.json | 6 + json/block/%name%_button_inventory.json | 6 + json/block/%name%_button_pressed.json | 6 + json/block/%name%_half_slab.json | 8 + json/block/%name%_inner_stairs.json | 8 + json/block/%name%_outer_stairs.json | 8 + json/block/%name%_pillar.json | 7 + json/block/%name%_pressure_plate_down.json | 6 + json/block/%name%_pressure_plate_up.json | 6 + json/block/%name%_small_tiles.json | 6 + json/block/%name%_stairs.json | 8 + json/block/%name%_tile.json | 6 + json/block/%name%_wall_inventory.json | 6 + json/block/%name%_wall_post.json | 6 + json/block/%name%_wall_side.json | 6 + json/block/%name%_wall_side_tall.json | 6 + json/blockstates/%name%.json | 7 + json/blockstates/%name%_brick_slab.json | 15 ++ json/blockstates/%name%_brick_stairs.json | 209 +++++++++++++++ json/blockstates/%name%_brick_wall.json | 90 +++++++ json/blockstates/%name%_bricks.json | 7 + json/blockstates/%name%_button.json | 118 +++++++++ json/blockstates/%name%_pillar.json | 7 + json/blockstates/%name%_plate.json | 10 + json/blockstates/%name%_slab.json | 15 ++ json/blockstates/%name%_small_tiles.json | 7 + json/blockstates/%name%_stairs.json | 209 +++++++++++++++ json/blockstates/%name%_tile.json | 7 + json/blockstates/%name%_wall.json | 90 +++++++ json/blockstates/a.txt | 23 ++ json/item/%name%.json | 3 + json/item/%name%_brick_slab.json | 3 + json/item/%name%_brick_stairs.json | 3 + json/item/%name%_brick_wall.json | 3 + json/item/%name%_bricks.json | 3 + json/item/%name%_button.json | 3 + json/item/%name%_pillar.json | 3 + json/item/%name%_plate.json | 3 + json/item/%name%_slab.json | 3 + json/item/%name%_small_tiles.json | 3 + json/item/%name%_stairs.json | 3 + json/item/%name%_tile.json | 3 + json/item/%name%_wall.json | 3 + json/item/a.txt | 23 ++ .../blocks/model/BaseBlockModel.java | 145 +---------- .../blocks/model/EndModelProvider.java | 11 +- .../ru/betterend/blocks/model/SlabModel.java | 240 +++++++++++++++++ .../betterend/blocks/model/SlabTopModel.java | 241 ++++++++++++++++++ .../ru/betterend/registry/BlockRegistry.java | 2 + .../betterend/blockstates/flavolite_slab.json | 13 + 60 files changed, 1557 insertions(+), 144 deletions(-) create mode 100644 json/block/%name%.json create mode 100644 json/block/%name%_brick_half_slab.json create mode 100644 json/block/%name%_brick_inner_stairs.json create mode 100644 json/block/%name%_brick_outer_stairs.json create mode 100644 json/block/%name%_brick_stairs.json create mode 100644 json/block/%name%_brick_wall_inventory.json create mode 100644 json/block/%name%_brick_wall_post.json create mode 100644 json/block/%name%_brick_wall_side.json create mode 100644 json/block/%name%_brick_wall_side_tall.json create mode 100644 json/block/%name%_bricks.json create mode 100644 json/block/%name%_button.json create mode 100644 json/block/%name%_button_inventory.json create mode 100644 json/block/%name%_button_pressed.json create mode 100644 json/block/%name%_half_slab.json create mode 100644 json/block/%name%_inner_stairs.json create mode 100644 json/block/%name%_outer_stairs.json create mode 100644 json/block/%name%_pillar.json create mode 100644 json/block/%name%_pressure_plate_down.json create mode 100644 json/block/%name%_pressure_plate_up.json create mode 100644 json/block/%name%_small_tiles.json create mode 100644 json/block/%name%_stairs.json create mode 100644 json/block/%name%_tile.json create mode 100644 json/block/%name%_wall_inventory.json create mode 100644 json/block/%name%_wall_post.json create mode 100644 json/block/%name%_wall_side.json create mode 100644 json/block/%name%_wall_side_tall.json create mode 100644 json/blockstates/%name%.json create mode 100644 json/blockstates/%name%_brick_slab.json create mode 100644 json/blockstates/%name%_brick_stairs.json create mode 100644 json/blockstates/%name%_brick_wall.json create mode 100644 json/blockstates/%name%_bricks.json create mode 100644 json/blockstates/%name%_button.json create mode 100644 json/blockstates/%name%_pillar.json create mode 100644 json/blockstates/%name%_plate.json create mode 100644 json/blockstates/%name%_slab.json create mode 100644 json/blockstates/%name%_small_tiles.json create mode 100644 json/blockstates/%name%_stairs.json create mode 100644 json/blockstates/%name%_tile.json create mode 100644 json/blockstates/%name%_wall.json create mode 100644 json/blockstates/a.txt create mode 100644 json/item/%name%.json create mode 100644 json/item/%name%_brick_slab.json create mode 100644 json/item/%name%_brick_stairs.json create mode 100644 json/item/%name%_brick_wall.json create mode 100644 json/item/%name%_bricks.json create mode 100644 json/item/%name%_button.json create mode 100644 json/item/%name%_pillar.json create mode 100644 json/item/%name%_plate.json create mode 100644 json/item/%name%_slab.json create mode 100644 json/item/%name%_small_tiles.json create mode 100644 json/item/%name%_stairs.json create mode 100644 json/item/%name%_tile.json create mode 100644 json/item/%name%_wall.json create mode 100644 json/item/a.txt create mode 100644 src/main/java/ru/betterend/blocks/model/SlabModel.java create mode 100644 src/main/java/ru/betterend/blocks/model/SlabTopModel.java create mode 100644 src/main/resources/assets/betterend/blockstates/flavolite_slab.json diff --git a/json/block/%name%.json b/json/block/%name%.json new file mode 100644 index 00000000..15906496 --- /dev/null +++ b/json/block/%name%.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/json/block/%name%_brick_half_slab.json b/json/block/%name%_brick_half_slab.json new file mode 100644 index 00000000..7a4235f3 --- /dev/null +++ b/json/block/%name%_brick_half_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "betterend:block/%name%_bricks", + "side": "betterend:block/%name%_bricks", + "top": "betterend:block/%name%_bricks" + } +} \ No newline at end of file diff --git a/json/block/%name%_brick_inner_stairs.json b/json/block/%name%_brick_inner_stairs.json new file mode 100644 index 00000000..cb848187 --- /dev/null +++ b/json/block/%name%_brick_inner_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "betterend:block/%name%_bricks", + "side": "betterend:block/%name%_bricks", + "top": "betterend:block/%name%_bricks" + } +} \ No newline at end of file diff --git a/json/block/%name%_brick_outer_stairs.json b/json/block/%name%_brick_outer_stairs.json new file mode 100644 index 00000000..f24d5f40 --- /dev/null +++ b/json/block/%name%_brick_outer_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "betterend:block/%name%_bricks", + "side": "betterend:block/%name%_bricks", + "top": "betterend:block/%name%_bricks" + } +} \ No newline at end of file diff --git a/json/block/%name%_brick_stairs.json b/json/block/%name%_brick_stairs.json new file mode 100644 index 00000000..938c1cb5 --- /dev/null +++ b/json/block/%name%_brick_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "betterend:block/%name%_bricks", + "side": "betterend:block/%name%_bricks", + "top": "betterend:block/%name%_bricks" + } +} \ No newline at end of file diff --git a/json/block/%name%_brick_wall_inventory.json b/json/block/%name%_brick_wall_inventory.json new file mode 100644 index 00000000..2bd3956f --- /dev/null +++ b/json/block/%name%_brick_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "betterend:block/%name%_bricks" + } +} \ No newline at end of file diff --git a/json/block/%name%_brick_wall_post.json b/json/block/%name%_brick_wall_post.json new file mode 100644 index 00000000..5816f7ae --- /dev/null +++ b/json/block/%name%_brick_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "betterend:block/%name%_bricks" + } +} \ No newline at end of file diff --git a/json/block/%name%_brick_wall_side.json b/json/block/%name%_brick_wall_side.json new file mode 100644 index 00000000..f9da149c --- /dev/null +++ b/json/block/%name%_brick_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "betterend:block/%name%_bricks" + } +} \ No newline at end of file diff --git a/json/block/%name%_brick_wall_side_tall.json b/json/block/%name%_brick_wall_side_tall.json new file mode 100644 index 00000000..dc1b0743 --- /dev/null +++ b/json/block/%name%_brick_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "betterend:block/%name%_bricks" + } +} \ No newline at end of file diff --git a/json/block/%name%_bricks.json b/json/block/%name%_bricks.json new file mode 100644 index 00000000..f218c0fe --- /dev/null +++ b/json/block/%name%_bricks.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "betterend:block/%name%_bricks" + } +} \ No newline at end of file diff --git a/json/block/%name%_button.json b/json/block/%name%_button.json new file mode 100644 index 00000000..a2e8c3ce --- /dev/null +++ b/json/block/%name%_button.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button", + "textures": { + "texture": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/json/block/%name%_button_inventory.json b/json/block/%name%_button_inventory.json new file mode 100644 index 00000000..42b61783 --- /dev/null +++ b/json/block/%name%_button_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_inventory", + "textures": { + "texture": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/json/block/%name%_button_pressed.json b/json/block/%name%_button_pressed.json new file mode 100644 index 00000000..d0094062 --- /dev/null +++ b/json/block/%name%_button_pressed.json @@ -0,0 +1,6 @@ +{ + "parent": "block/button_pressed", + "textures": { + "texture": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/json/block/%name%_half_slab.json b/json/block/%name%_half_slab.json new file mode 100644 index 00000000..9d5489c1 --- /dev/null +++ b/json/block/%name%_half_slab.json @@ -0,0 +1,8 @@ +{ + "parent": "block/slab", + "textures": { + "bottom": "betterend:block/%name%", + "side": "betterend:block/%name%", + "top": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/json/block/%name%_inner_stairs.json b/json/block/%name%_inner_stairs.json new file mode 100644 index 00000000..e95454c6 --- /dev/null +++ b/json/block/%name%_inner_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/inner_stairs", + "textures": { + "bottom": "betterend:block/%name%", + "side": "betterend:block/%name%", + "top": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/json/block/%name%_outer_stairs.json b/json/block/%name%_outer_stairs.json new file mode 100644 index 00000000..670e267d --- /dev/null +++ b/json/block/%name%_outer_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/outer_stairs", + "textures": { + "bottom": "betterend:block/%name%", + "side": "betterend:block/%name%", + "top": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/json/block/%name%_pillar.json b/json/block/%name%_pillar.json new file mode 100644 index 00000000..837248a3 --- /dev/null +++ b/json/block/%name%_pillar.json @@ -0,0 +1,7 @@ +{ + "parent": "minecraft:block/cube_column", + "textures": { + "end": "betterend:block/%name%_pillar_top", + "side": "betterend:block/%name%_pillar_side" + } +} \ No newline at end of file diff --git a/json/block/%name%_pressure_plate_down.json b/json/block/%name%_pressure_plate_down.json new file mode 100644 index 00000000..ef2fec3b --- /dev/null +++ b/json/block/%name%_pressure_plate_down.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_down", + "textures": { + "texture": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/json/block/%name%_pressure_plate_up.json b/json/block/%name%_pressure_plate_up.json new file mode 100644 index 00000000..9fe8a247 --- /dev/null +++ b/json/block/%name%_pressure_plate_up.json @@ -0,0 +1,6 @@ +{ + "parent": "block/pressure_plate_up", + "textures": { + "texture": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/json/block/%name%_small_tiles.json b/json/block/%name%_small_tiles.json new file mode 100644 index 00000000..a0c1a8eb --- /dev/null +++ b/json/block/%name%_small_tiles.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "betterend:block/%name%_small_tiles" + } +} \ No newline at end of file diff --git a/json/block/%name%_stairs.json b/json/block/%name%_stairs.json new file mode 100644 index 00000000..61115016 --- /dev/null +++ b/json/block/%name%_stairs.json @@ -0,0 +1,8 @@ +{ + "parent": "block/stairs", + "textures": { + "bottom": "betterend:block/%name%", + "side": "betterend:block/%name%", + "top": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/json/block/%name%_tile.json b/json/block/%name%_tile.json new file mode 100644 index 00000000..632959b1 --- /dev/null +++ b/json/block/%name%_tile.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "betterend:block/%name%_tile" + } +} \ No newline at end of file diff --git a/json/block/%name%_wall_inventory.json b/json/block/%name%_wall_inventory.json new file mode 100644 index 00000000..fdb5d169 --- /dev/null +++ b/json/block/%name%_wall_inventory.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/wall_inventory", + "textures": { + "wall": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/json/block/%name%_wall_post.json b/json/block/%name%_wall_post.json new file mode 100644 index 00000000..2c3195b1 --- /dev/null +++ b/json/block/%name%_wall_post.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_post", + "textures": { + "wall": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/json/block/%name%_wall_side.json b/json/block/%name%_wall_side.json new file mode 100644 index 00000000..2c228e96 --- /dev/null +++ b/json/block/%name%_wall_side.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side", + "textures": { + "wall": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/json/block/%name%_wall_side_tall.json b/json/block/%name%_wall_side_tall.json new file mode 100644 index 00000000..4eeefe22 --- /dev/null +++ b/json/block/%name%_wall_side_tall.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/template_wall_side_tall", + "textures": { + "wall": "betterend:block/%name%" + } +} \ No newline at end of file diff --git a/json/blockstates/%name%.json b/json/blockstates/%name%.json new file mode 100644 index 00000000..79dd6729 --- /dev/null +++ b/json/blockstates/%name%.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "betterend:block/%name%" + } + } +} \ No newline at end of file diff --git a/json/blockstates/%name%_brick_slab.json b/json/blockstates/%name%_brick_slab.json new file mode 100644 index 00000000..582099a0 --- /dev/null +++ b/json/blockstates/%name%_brick_slab.json @@ -0,0 +1,15 @@ +{ + "variants": { + "type=bottom": { + "model": "betterend:block/%name%_brick_half_slab" + }, + "type=double": { + "model": "betterend:block/%name%_bricks" + }, + "type=top": { + "model": "betterend:block/%name%_brick_half_slab", + "uvlock": true, + "x": 180 + } + } +} \ No newline at end of file diff --git a/json/blockstates/%name%_brick_stairs.json b/json/blockstates/%name%_brick_stairs.json new file mode 100644 index 00000000..85e24d01 --- /dev/null +++ b/json/blockstates/%name%_brick_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_brick_inner_stairs" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_brick_outer_stairs" + }, + "facing=east,half=bottom,shape=straight": { + "model": "betterend:block/%name%_brick_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "betterend:block/%name%_brick_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "betterend:block/%name%_brick_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "betterend:block/%name%_brick_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_brick_inner_stairs" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_brick_outer_stairs" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "betterend:block/%name%_brick_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "betterend:block/%name%_brick_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "betterend:block/%name%_brick_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "betterend:block/%name%_brick_inner_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "betterend:block/%name%_brick_outer_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "betterend:block/%name%_brick_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} \ No newline at end of file diff --git a/json/blockstates/%name%_brick_wall.json b/json/blockstates/%name%_brick_wall.json new file mode 100644 index 00000000..a3e02377 --- /dev/null +++ b/json/blockstates/%name%_brick_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "betterend:block/%name%_brick_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "betterend:block/%name%_brick_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "betterend:block/%name%_brick_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "betterend:block/%name%_brick_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "betterend:block/%name%_brick_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "betterend:block/%name%_brick_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "betterend:block/%name%_brick_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "betterend:block/%name%_brick_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "betterend:block/%name%_brick_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/json/blockstates/%name%_bricks.json b/json/blockstates/%name%_bricks.json new file mode 100644 index 00000000..59171c16 --- /dev/null +++ b/json/blockstates/%name%_bricks.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "betterend:block/%name%_bricks" + } + } +} \ No newline at end of file diff --git a/json/blockstates/%name%_button.json b/json/blockstates/%name%_button.json new file mode 100644 index 00000000..a65801cf --- /dev/null +++ b/json/blockstates/%name%_button.json @@ -0,0 +1,118 @@ +{ + "variants": { + "face=ceiling,facing=east,powered=false": { + "model": "betterend:block/%name%_button", + "x": 180, + "y": 270 + }, + "face=ceiling,facing=east,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "x": 180, + "y": 270 + }, + "face=ceiling,facing=north,powered=false": { + "model": "betterend:block/%name%_button", + "x": 180, + "y": 180 + }, + "face=ceiling,facing=north,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "x": 180, + "y": 180 + }, + "face=ceiling,facing=south,powered=false": { + "model": "betterend:block/%name%_button", + "x": 180 + }, + "face=ceiling,facing=south,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "x": 180 + }, + "face=ceiling,facing=west,powered=false": { + "model": "betterend:block/%name%_button", + "x": 180, + "y": 90 + }, + "face=ceiling,facing=west,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "x": 180, + "y": 90 + }, + "face=floor,facing=east,powered=false": { + "model": "betterend:block/%name%_button", + "y": 90 + }, + "face=floor,facing=east,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "y": 90 + }, + "face=floor,facing=north,powered=false": { + "model": "betterend:block/%name%_button" + }, + "face=floor,facing=north,powered=true": { + "model": "betterend:block/%name%_button_pressed" + }, + "face=floor,facing=south,powered=false": { + "model": "betterend:block/%name%_button", + "y": 180 + }, + "face=floor,facing=south,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "y": 180 + }, + "face=floor,facing=west,powered=false": { + "model": "betterend:block/%name%_button", + "y": 270 + }, + "face=floor,facing=west,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "y": 270 + }, + "face=wall,facing=east,powered=false": { + "model": "betterend:block/%name%_button", + "uvlock": true, + "x": 90, + "y": 90 + }, + "face=wall,facing=east,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "uvlock": true, + "x": 90, + "y": 90 + }, + "face=wall,facing=north,powered=false": { + "model": "betterend:block/%name%_button", + "uvlock": true, + "x": 90 + }, + "face=wall,facing=north,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "uvlock": true, + "x": 90 + }, + "face=wall,facing=south,powered=false": { + "model": "betterend:block/%name%_button", + "uvlock": true, + "x": 90, + "y": 180 + }, + "face=wall,facing=south,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "uvlock": true, + "x": 90, + "y": 180 + }, + "face=wall,facing=west,powered=false": { + "model": "betterend:block/%name%_button", + "uvlock": true, + "x": 90, + "y": 270 + }, + "face=wall,facing=west,powered=true": { + "model": "betterend:block/%name%_button_pressed", + "uvlock": true, + "x": 90, + "y": 270 + } + } +} \ No newline at end of file diff --git a/json/blockstates/%name%_pillar.json b/json/blockstates/%name%_pillar.json new file mode 100644 index 00000000..fddcfc6c --- /dev/null +++ b/json/blockstates/%name%_pillar.json @@ -0,0 +1,7 @@ +{ + "variants": { + "axis=x": { "model": "betterend:block/%name%_pillar", "x": 90, "y": 90 }, + "axis=y": { "model": "betterend:block/%name%_pillar" }, + "axis=z": { "model": "betterend:block/%name%_pillar", "x": 90 } + } +} \ No newline at end of file diff --git a/json/blockstates/%name%_plate.json b/json/blockstates/%name%_plate.json new file mode 100644 index 00000000..f8ad4900 --- /dev/null +++ b/json/blockstates/%name%_plate.json @@ -0,0 +1,10 @@ +{ + "variants": { + "powered=false": { + "model": "betterend:block/%name%_pressure_plate_up" + }, + "powered=true": { + "model": "betterend:block/%name%_pressure_plate_down" + } + } +} \ No newline at end of file diff --git a/json/blockstates/%name%_slab.json b/json/blockstates/%name%_slab.json new file mode 100644 index 00000000..5eafe1bc --- /dev/null +++ b/json/blockstates/%name%_slab.json @@ -0,0 +1,15 @@ +{ + "variants": { + "type=bottom": { + "model": "betterend:block/%name%_half_slab" + }, + "type=double": { + "model": "betterend:block/%name%" + }, + "type=top": { + "model": "betterend:block/%name%_half_slab", + "uvlock": true, + "x": 180 + } + } +} \ No newline at end of file diff --git a/json/blockstates/%name%_small_tiles.json b/json/blockstates/%name%_small_tiles.json new file mode 100644 index 00000000..5913e0d4 --- /dev/null +++ b/json/blockstates/%name%_small_tiles.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "betterend:block/%name%_small_tiles" + } + } +} \ No newline at end of file diff --git a/json/blockstates/%name%_stairs.json b/json/blockstates/%name%_stairs.json new file mode 100644 index 00000000..e0a17faf --- /dev/null +++ b/json/blockstates/%name%_stairs.json @@ -0,0 +1,209 @@ +{ + "variants": { + "facing=east,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs" + }, + "facing=east,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "y": 270 + }, + "facing=east,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs" + }, + "facing=east,half=bottom,shape=straight": { + "model": "betterend:block/%name%_stairs" + }, + "facing=east,half=top,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180 + }, + "facing=east,half=top,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=east,half=top,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "y": 180 + }, + "facing=north,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=bottom,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "y": 270 + }, + "facing=north,half=top,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=north,half=top,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180 + }, + "facing=north,half=top,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=south,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs" + }, + "facing=south,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs" + }, + "facing=south,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=bottom,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "y": 90 + }, + "facing=south,half=top,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=south,half=top,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=south,half=top,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "x": 180, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "y": 90 + }, + "facing=west,half=bottom,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=bottom,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "y": 180 + }, + "facing=west,half=top,shape=inner_left": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=inner_right": { + "model": "betterend:block/%name%_inner_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=outer_left": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180, + "y": 180 + }, + "facing=west,half=top,shape=outer_right": { + "model": "betterend:block/%name%_outer_stairs", + "uvlock": true, + "x": 180, + "y": 270 + }, + "facing=west,half=top,shape=straight": { + "model": "betterend:block/%name%_stairs", + "uvlock": true, + "x": 180, + "y": 180 + } + } +} \ No newline at end of file diff --git a/json/blockstates/%name%_tile.json b/json/blockstates/%name%_tile.json new file mode 100644 index 00000000..4dc91e5e --- /dev/null +++ b/json/blockstates/%name%_tile.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "betterend:block/%name%_tile" + } + } +} \ No newline at end of file diff --git a/json/blockstates/%name%_wall.json b/json/blockstates/%name%_wall.json new file mode 100644 index 00000000..115da727 --- /dev/null +++ b/json/blockstates/%name%_wall.json @@ -0,0 +1,90 @@ +{ + "multipart": [ + { + "when": { + "up": "true" + }, + "apply": { + "model": "betterend:block/%name%_wall_post" + } + }, + { + "when": { + "north": "low" + }, + "apply": { + "model": "betterend:block/%name%_wall_side", + "uvlock": true + } + }, + { + "when": { + "east": "low" + }, + "apply": { + "model": "betterend:block/%name%_wall_side", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "low" + }, + "apply": { + "model": "betterend:block/%name%_wall_side", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "low" + }, + "apply": { + "model": "betterend:block/%name%_wall_side", + "y": 270, + "uvlock": true + } + }, + { + "when": { + "north": "tall" + }, + "apply": { + "model": "betterend:block/%name%_wall_side_tall", + "uvlock": true + } + }, + { + "when": { + "east": "tall" + }, + "apply": { + "model": "betterend:block/%name%_wall_side_tall", + "y": 90, + "uvlock": true + } + }, + { + "when": { + "south": "tall" + }, + "apply": { + "model": "betterend:block/%name%_wall_side_tall", + "y": 180, + "uvlock": true + } + }, + { + "when": { + "west": "tall" + }, + "apply": { + "model": "betterend:block/%name%_wall_side_tall", + "y": 270, + "uvlock": true + } + } + ] +} \ No newline at end of file diff --git a/json/blockstates/a.txt b/json/blockstates/a.txt new file mode 100644 index 00000000..1a56d0c8 --- /dev/null +++ b/json/blockstates/a.txt @@ -0,0 +1,23 @@ + Том в устройстве D имеет метку Data + Серийный номер тома: C7B5-F673 + + Содержимое папки D:\BetterEnd\Utilities\src\data\stone\blockstates + +11.10.2020 15:54 . +11.10.2020 15:54 .. +11.10.2020 15:50 103 %name%.json +11.10.2020 15:51 110 %name%_bricks.json +11.10.2020 15:54 382 %name%_brick_slab.json +11.10.2020 15:53 7 540 %name%_brick_stairs.json +11.10.2020 15:52 1 635 %name%_brick_wall.json +26.09.2020 20:35 4 006 %name%_button.json +11.10.2020 15:50 253 %name%_pillar.json +26.09.2020 20:35 241 %name%_plate.json +26.09.2020 20:35 364 %name%_slab.json +11.10.2020 15:50 115 %name%_small_tiles.json +26.09.2020 20:35 7 300 %name%_stairs.json +11.10.2020 15:50 108 %name%_tile.json +11.10.2020 15:52 1 581 %name%_wall.json +11.10.2020 15:58 0 a.txt + 14 файлов 23 738 байт + 2 папок 785 301 614 592 байт свободно diff --git a/json/item/%name%.json b/json/item/%name%.json new file mode 100644 index 00000000..92b1fef5 --- /dev/null +++ b/json/item/%name%.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%" +} \ No newline at end of file diff --git a/json/item/%name%_brick_slab.json b/json/item/%name%_brick_slab.json new file mode 100644 index 00000000..32c1d293 --- /dev/null +++ b/json/item/%name%_brick_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_brick_half_slab" +} \ No newline at end of file diff --git a/json/item/%name%_brick_stairs.json b/json/item/%name%_brick_stairs.json new file mode 100644 index 00000000..89ecaa54 --- /dev/null +++ b/json/item/%name%_brick_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_brick_stairs" +} \ No newline at end of file diff --git a/json/item/%name%_brick_wall.json b/json/item/%name%_brick_wall.json new file mode 100644 index 00000000..8719d7c1 --- /dev/null +++ b/json/item/%name%_brick_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_brick_wall_inventory" +} \ No newline at end of file diff --git a/json/item/%name%_bricks.json b/json/item/%name%_bricks.json new file mode 100644 index 00000000..14d8a30b --- /dev/null +++ b/json/item/%name%_bricks.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_bricks" +} \ No newline at end of file diff --git a/json/item/%name%_button.json b/json/item/%name%_button.json new file mode 100644 index 00000000..3dc32368 --- /dev/null +++ b/json/item/%name%_button.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_button_inventory" +} \ No newline at end of file diff --git a/json/item/%name%_pillar.json b/json/item/%name%_pillar.json new file mode 100644 index 00000000..0f7de019 --- /dev/null +++ b/json/item/%name%_pillar.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_pillar" +} \ No newline at end of file diff --git a/json/item/%name%_plate.json b/json/item/%name%_plate.json new file mode 100644 index 00000000..484a02f9 --- /dev/null +++ b/json/item/%name%_plate.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_pressure_plate_up" +} \ No newline at end of file diff --git a/json/item/%name%_slab.json b/json/item/%name%_slab.json new file mode 100644 index 00000000..f6853e03 --- /dev/null +++ b/json/item/%name%_slab.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_half_slab" +} \ No newline at end of file diff --git a/json/item/%name%_small_tiles.json b/json/item/%name%_small_tiles.json new file mode 100644 index 00000000..2d8006df --- /dev/null +++ b/json/item/%name%_small_tiles.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_small_tiles" +} \ No newline at end of file diff --git a/json/item/%name%_stairs.json b/json/item/%name%_stairs.json new file mode 100644 index 00000000..0f51c6ec --- /dev/null +++ b/json/item/%name%_stairs.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_stairs" +} \ No newline at end of file diff --git a/json/item/%name%_tile.json b/json/item/%name%_tile.json new file mode 100644 index 00000000..4b981468 --- /dev/null +++ b/json/item/%name%_tile.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_tile" +} \ No newline at end of file diff --git a/json/item/%name%_wall.json b/json/item/%name%_wall.json new file mode 100644 index 00000000..eee0e6ae --- /dev/null +++ b/json/item/%name%_wall.json @@ -0,0 +1,3 @@ +{ + "parent": "betterend:block/%name%_wall_inventory" +} \ No newline at end of file diff --git a/json/item/a.txt b/json/item/a.txt new file mode 100644 index 00000000..3a43dcf5 --- /dev/null +++ b/json/item/a.txt @@ -0,0 +1,23 @@ + Том в устройстве D имеет метку Data + Серийный номер тома: C7B5-F673 + + Содержимое папки D:\BetterEnd\Utilities\src\data\stone\item + +11.10.2020 15:55 . +11.10.2020 15:55 .. +11.10.2020 15:42 44 %name%.json +11.10.2020 15:46 51 %name%_bricks.json +11.10.2020 15:47 55 %name%_brick_slab.json +11.10.2020 15:46 57 %name%_brick_stairs.json +11.10.2020 15:47 65 %name%_brick_wall.json +11.10.2020 15:48 61 %name%_button.json +11.10.2020 15:43 51 %name%_pillar.json +26.09.2020 20:36 62 %name%_plate.json +11.10.2020 15:43 49 %name%_slab.json +11.10.2020 15:43 56 %name%_small_tiles.json +11.10.2020 15:43 51 %name%_stairs.json +11.10.2020 15:43 49 %name%_tile.json +11.10.2020 15:47 59 %name%_wall.json +11.10.2020 15:55 0 a.txt + 14 файлов 710 байт + 2 папок 785 301 659 648 байт свободно diff --git a/src/main/java/ru/betterend/blocks/model/BaseBlockModel.java b/src/main/java/ru/betterend/blocks/model/BaseBlockModel.java index 8e872b9c..44ea19e0 100644 --- a/src/main/java/ru/betterend/blocks/model/BaseBlockModel.java +++ b/src/main/java/ru/betterend/blocks/model/BaseBlockModel.java @@ -18,6 +18,7 @@ import net.fabricmc.fabric.api.renderer.v1.mesh.MutableQuadView; import net.fabricmc.fabric.api.renderer.v1.mesh.QuadEmitter; import net.fabricmc.fabric.api.renderer.v1.model.FabricBakedModel; import net.fabricmc.fabric.api.renderer.v1.render.RenderContext; + import net.minecraft.block.BlockState; import net.minecraft.client.render.model.BakedModel; import net.minecraft.client.render.model.BakedQuad; @@ -30,13 +31,12 @@ import net.minecraft.client.render.model.json.ModelTransformation; import net.minecraft.client.texture.Sprite; import net.minecraft.client.texture.SpriteAtlasTexture; import net.minecraft.client.util.SpriteIdentifier; -import net.minecraft.client.util.math.AffineTransformation; -import net.minecraft.client.util.math.Vector3f; import net.minecraft.item.ItemStack; import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.BlockRenderView; + import ru.betterend.BetterEnd; public class BaseBlockModel implements UnbakedModel, BakedModel, FabricBakedModel { @@ -70,15 +70,9 @@ public class BaseBlockModel implements UnbakedModel, BakedModel, FabricBakedMode MeshBuilder builder = renderer.meshBuilder(); QuadEmitter emitter = builder.getEmitter(); - Vector3f rotation = AffineTransformation.getLinearTransformationAndTranslationFromAffine(rotationContainer.getRotation().getMatrix()).getSecond(); - - System.out.println("====="); - System.out.println(rotation); - Direction[] directions = Direction.values(); for (Direction direction : directions) { - Direction rotate = Direction.transform(rotationContainer.getRotation().getMatrix(), direction); - this.rotate(emitter, direction, rotate); + emitter.square(direction, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f); switch (sprites.length) { case 1: { emitter.spriteBake(0, sprites[0], MutableQuadView.BAKE_LOCK_UV); @@ -160,138 +154,7 @@ public class BaseBlockModel implements UnbakedModel, BakedModel, FabricBakedMode return this; } - private void rotate(QuadEmitter emitter, Direction direction, Direction rotation) { - switch (direction) { - case NORTH: { - switch (rotation) { - case DOWN: - case SOUTH: { - emitter.square(rotation, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f); - break; - } - case EAST: { - emitter.square(rotation, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f); - break; - } - case WEST: { - emitter.square(rotation, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f); - break; - } - default: { - emitter.square(rotation, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f); - } - } - break; - } - case SOUTH: { - switch (rotation) { - case DOWN: - case NORTH: { - emitter.square(rotation, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f); - break; - } - case EAST: { - emitter.square(rotation, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f); - break; - } - case WEST: { - emitter.square(rotation, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f); - break; - } - default: { - emitter.square(rotation, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f); - } - } - break; - } - case EAST: { - switch (rotation) { - case NORTH: { - emitter.square(rotation, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f); - break; - } - case SOUTH: { - emitter.square(rotation, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f); - break; - } - case DOWN: - case WEST: { - emitter.square(rotation, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f); - break; - } - default: { - emitter.square(rotation, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f); - } - } - break; - } - case WEST: { - switch (rotation) { - case NORTH: { - emitter.square(rotation, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f); - break; - } - case SOUTH: { - emitter.square(rotation, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f); - break; - } - case DOWN: - case EAST: { - emitter.square(rotation, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f); - break; - } - default: { - emitter.square(rotation, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f); - } - } - break; - } - case DOWN: { - switch (rotation) { - case EAST: { - emitter.square(rotation, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f); - break; - } - case WEST: { - emitter.square(rotation, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f); - break; - } - case SOUTH: - case UP: { - emitter.square(rotation, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f); - break; - } - default: { - emitter.square(rotation, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f); - } - } - break; - } - case UP: { - switch (rotation) { - case EAST: { - emitter.square(rotation, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f); - break; - } - case WEST: { - emitter.square(rotation, 1.0f, 0.0f, 0.0f, 1.0f, 0.0f); - break; - } - case SOUTH: - case DOWN: { - emitter.square(rotation, 1.0f, 1.0f, 0.0f, 0.0f, 0.0f); - break; - } - default: { - emitter.square(rotation, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f); - } - } - break; - } - } - } - - @Override + @Override public boolean isVanillaAdapter() { return false; } diff --git a/src/main/java/ru/betterend/blocks/model/EndModelProvider.java b/src/main/java/ru/betterend/blocks/model/EndModelProvider.java index d39d9df7..653fbcd4 100644 --- a/src/main/java/ru/betterend/blocks/model/EndModelProvider.java +++ b/src/main/java/ru/betterend/blocks/model/EndModelProvider.java @@ -17,7 +17,9 @@ public class EndModelProvider implements ModelResourceProvider { private static final Map MODELS; - public static final UnbakedModel BASE_BLOCK_MODEL = new BaseBlockModel("block/flavolite"); + public static final UnbakedModel FLAVOLITE_BLOCK = new BaseBlockModel("block/flavolite"); + public static final UnbakedModel FLAVOLITE_SLAB = new SlabModel("block/flavolite"); + public static final UnbakedModel FLAVOLITE_SLAB_TOP = new SlabTopModel("block/flavolite"); public static void registerModel(String path, UnbakedModel model) { MODELS.put(BetterEnd.makeID(path), model); @@ -34,7 +36,10 @@ public class EndModelProvider implements ModelResourceProvider { static { MODELS = Maps.newHashMap(); - registerModel("block/flavolite", BASE_BLOCK_MODEL); - registerModel("item/flavolite", BASE_BLOCK_MODEL); + registerModel("item/flavolite", FLAVOLITE_BLOCK); + registerModel("block/flavolite", FLAVOLITE_BLOCK); + registerModel("item/flavolite_slab", FLAVOLITE_SLAB); + registerModel("block/flavolite_slab", FLAVOLITE_SLAB); + registerModel("block/flavolite_slab_top", FLAVOLITE_SLAB_TOP); } } diff --git a/src/main/java/ru/betterend/blocks/model/SlabModel.java b/src/main/java/ru/betterend/blocks/model/SlabModel.java new file mode 100644 index 00000000..4bcd5eb7 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/model/SlabModel.java @@ -0,0 +1,240 @@ +package ru.betterend.blocks.model; + +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Random; +import java.util.Set; +import java.util.function.Function; +import java.util.function.Supplier; + +import com.mojang.datafixers.util.Pair; + +import net.fabricmc.fabric.api.renderer.v1.Renderer; +import net.fabricmc.fabric.api.renderer.v1.RendererAccess; +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.MutableQuadView; +import net.fabricmc.fabric.api.renderer.v1.mesh.QuadEmitter; +import net.fabricmc.fabric.api.renderer.v1.model.FabricBakedModel; +import net.fabricmc.fabric.api.renderer.v1.render.RenderContext; + +import net.minecraft.block.BlockState; +import net.minecraft.client.render.model.BakedModel; +import net.minecraft.client.render.model.BakedQuad; +import net.minecraft.client.render.model.ModelBakeSettings; +import net.minecraft.client.render.model.ModelLoader; +import net.minecraft.client.render.model.UnbakedModel; +import net.minecraft.client.render.model.json.JsonUnbakedModel; +import net.minecraft.client.render.model.json.ModelOverrideList; +import net.minecraft.client.render.model.json.ModelTransformation; +import net.minecraft.client.texture.Sprite; +import net.minecraft.client.texture.SpriteAtlasTexture; +import net.minecraft.client.util.SpriteIdentifier; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.BlockRenderView; + +import ru.betterend.BetterEnd; + +public class SlabModel implements UnbakedModel, BakedModel, FabricBakedModel { + + private static final Identifier DEFAULT_SLAB_MODEL = new Identifier("minecraft:block/slab"); + + private final SpriteIdentifier[] spritesIDs; + private final Sprite[] sprites; + private ModelTransformation transformation; + private Mesh mesh; + + public SlabModel(String... textures) { + this.spritesIDs = new SpriteIdentifier[textures.length]; + this.sprites = new Sprite[textures.length]; + for (int i = 0; i < textures.length; i++) { + this.spritesIDs[i] = new SpriteIdentifier(SpriteAtlasTexture.BLOCK_ATLAS_TEXTURE, BetterEnd.makeID(textures[i])); + } + } + + @Override + public BakedModel bake(ModelLoader loader, Function textureGetter, + ModelBakeSettings rotationContainer, Identifier modelId) { + for(int i = 0; i < sprites.length; i++) { + this.sprites[i] = textureGetter.apply(spritesIDs[i]); + } + + JsonUnbakedModel jsonBlockModel = (JsonUnbakedModel) loader.getOrLoadModel(DEFAULT_SLAB_MODEL); + this.transformation = jsonBlockModel.getTransformations(); + + Renderer renderer = RendererAccess.INSTANCE.getRenderer(); + MeshBuilder builder = renderer.meshBuilder(); + QuadEmitter emitter = builder.getEmitter(); + + for (Direction direction : Direction.values()) { + switch (sprites.length) { + case 1: { + this.buildFace(emitter, direction, sprites[0]); + break; + } + case 2: { + switch (direction) { + case DOWN: + case UP: { + this.buildFace(emitter, direction, sprites[0]); + break; + } + default: { + this.buildFace(emitter, direction, sprites[1]); + } + } + } + case 3: { + switch (direction) { + case DOWN: + case UP: { + this.buildFace(emitter, direction, sprites[0]); + break; + } + case NORTH: + case SOUTH: { + this.buildFace(emitter, direction, sprites[1]); + break; + } + default: { + this.buildFace(emitter, direction, sprites[2]); + } + } + } + case 4: { + switch (direction) { + case DOWN: + case UP: { + this.buildFace(emitter, direction, sprites[0]); + break; + } + case NORTH: { + this.buildFace(emitter, direction, sprites[1]); + break; + } + case SOUTH: { + this.buildFace(emitter, direction, sprites[2]); + break; + } + default: { + this.buildFace(emitter, direction, sprites[3]); + } + } + } + case 5: { + switch (direction) { + case DOWN: + case UP: + case NORTH: + case SOUTH: { + this.buildFace(emitter, direction, sprites[direction.ordinal()]); + break; + } + default: { + this.buildFace(emitter, direction, sprites[4]); + } + } + } + default: { + this.buildFace(emitter, direction, sprites[direction.ordinal()]); + } + } + + emitter.spriteColor(0, -1, -1, -1, -1); + emitter.emit(); + } + this.mesh = builder.build(); + + return this; + } + + private void buildFace(QuadEmitter emitter, Direction direction, Sprite sprite) { + switch(direction) { + case DOWN: { + emitter.square(direction, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f); + emitter.cullFace(direction); + break; + } + case UP: { + emitter.square(direction, 0.0f, 0.0f, 1.0f, 1.0f, 0.5f); + break; + } + default: { + emitter.square(direction, 0.0f, 0.0f, 1.0f, 0.5f, 0.0f); + emitter.cullFace(direction); + } + } + emitter.spriteBake(0, sprite, MutableQuadView.BAKE_LOCK_UV); + } + + @Override + public boolean isVanillaAdapter() { + return false; + } + + @Override + public void emitBlockQuads(BlockRenderView blockView, BlockState state, BlockPos pos, + Supplier randomSupplier, RenderContext context) { + context.meshConsumer().accept(mesh); + } + + @Override + public void emitItemQuads(ItemStack stack, Supplier randomSupplier, RenderContext context) { + context.meshConsumer().accept(mesh); + } + + @Override + public List getQuads(BlockState state, Direction face, Random random) { + return null; + } + + @Override + public boolean useAmbientOcclusion() { + return false; + } + + @Override + public boolean hasDepth() { + return false; + } + + @Override + public boolean isSideLit() { + return true; + } + + @Override + public boolean isBuiltin() { + return false; + } + + @Override + public Sprite getSprite() { + return this.sprites[0]; + } + + @Override + public ModelTransformation getTransformation() { + return this.transformation; + } + + @Override + public ModelOverrideList getOverrides() { + return ModelOverrideList.EMPTY; + } + + @Override + public Collection getModelDependencies() { + return Arrays.asList(DEFAULT_SLAB_MODEL); + } + + @Override + public Collection getTextureDependencies(Function unbakedModelGetter, + Set> unresolvedTextureReferences) { + return Arrays.asList(spritesIDs); + } +} diff --git a/src/main/java/ru/betterend/blocks/model/SlabTopModel.java b/src/main/java/ru/betterend/blocks/model/SlabTopModel.java new file mode 100644 index 00000000..ff68d392 --- /dev/null +++ b/src/main/java/ru/betterend/blocks/model/SlabTopModel.java @@ -0,0 +1,241 @@ +package ru.betterend.blocks.model; + +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import java.util.Random; +import java.util.Set; +import java.util.function.Function; +import java.util.function.Supplier; + +import com.mojang.datafixers.util.Pair; + +import net.fabricmc.fabric.api.renderer.v1.Renderer; +import net.fabricmc.fabric.api.renderer.v1.RendererAccess; +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.MutableQuadView; +import net.fabricmc.fabric.api.renderer.v1.mesh.QuadEmitter; +import net.fabricmc.fabric.api.renderer.v1.model.FabricBakedModel; +import net.fabricmc.fabric.api.renderer.v1.render.RenderContext; + +import net.minecraft.block.BlockState; +import net.minecraft.client.render.model.BakedModel; +import net.minecraft.client.render.model.BakedQuad; +import net.minecraft.client.render.model.ModelBakeSettings; +import net.minecraft.client.render.model.ModelLoader; +import net.minecraft.client.render.model.UnbakedModel; +import net.minecraft.client.render.model.json.JsonUnbakedModel; +import net.minecraft.client.render.model.json.ModelOverrideList; +import net.minecraft.client.render.model.json.ModelTransformation; +import net.minecraft.client.texture.Sprite; +import net.minecraft.client.texture.SpriteAtlasTexture; +import net.minecraft.client.util.SpriteIdentifier; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Identifier; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.Direction; +import net.minecraft.world.BlockRenderView; + +import ru.betterend.BetterEnd; + +public class SlabTopModel implements UnbakedModel, BakedModel, FabricBakedModel { + + private static final Identifier DEFAULT_MODEL = new Identifier("minecraft:block/slab_top"); + + private final SpriteIdentifier[] spritesIDs; + private final Sprite[] sprites; + private ModelTransformation transformation; + private Mesh mesh; + + public SlabTopModel(String... textures) { + this.spritesIDs = new SpriteIdentifier[textures.length]; + this.sprites = new Sprite[textures.length]; + for (int i = 0; i < textures.length; i++) { + this.spritesIDs[i] = new SpriteIdentifier(SpriteAtlasTexture.BLOCK_ATLAS_TEXTURE, BetterEnd.makeID(textures[i])); + } + } + + @Override + public BakedModel bake(ModelLoader loader, Function textureGetter, + ModelBakeSettings rotationContainer, Identifier modelId) { + for(int i = 0; i < sprites.length; i++) { + this.sprites[i] = textureGetter.apply(spritesIDs[i]); + } + + JsonUnbakedModel jsonBlockModel = (JsonUnbakedModel) loader.getOrLoadModel(DEFAULT_MODEL); + this.transformation = jsonBlockModel.getTransformations(); + + Renderer renderer = RendererAccess.INSTANCE.getRenderer(); + MeshBuilder builder = renderer.meshBuilder(); + QuadEmitter emitter = builder.getEmitter(); + + Direction[] directions = Direction.values(); + for (Direction direction : directions) { + switch (sprites.length) { + case 1: { + this.buildModel(emitter, direction, sprites[0]); + break; + } + case 2: { + switch (direction) { + case DOWN: + case UP: { + this.buildModel(emitter, direction, sprites[0]); + break; + } + default: { + this.buildModel(emitter, direction, sprites[1]); + } + } + } + case 3: { + switch (direction) { + case DOWN: + case UP: { + this.buildModel(emitter, direction, sprites[0]); + break; + } + case NORTH: + case SOUTH: { + this.buildModel(emitter, direction, sprites[1]); + break; + } + default: { + this.buildModel(emitter, direction, sprites[2]); + } + } + } + case 4: { + switch (direction) { + case DOWN: + case UP: { + this.buildModel(emitter, direction, sprites[0]); + break; + } + case NORTH: { + this.buildModel(emitter, direction, sprites[1]); + break; + } + case SOUTH: { + this.buildModel(emitter, direction, sprites[2]); + break; + } + default: { + this.buildModel(emitter, direction, sprites[3]); + } + } + } + case 5: { + switch (direction) { + case DOWN: + case UP: + case NORTH: + case SOUTH: { + this.buildModel(emitter, direction, sprites[direction.ordinal()]); + break; + } + default: { + this.buildModel(emitter, direction, sprites[4]); + } + } + } + default: { + this.buildModel(emitter, direction, sprites[direction.ordinal()]); + } + } + + emitter.spriteColor(0, -1, -1, -1, -1); + emitter.emit(); + } + this.mesh = builder.build(); + + return this; + } + + private void buildModel(QuadEmitter emitter, Direction direction, Sprite sprite) { + switch(direction) { + case DOWN: { + emitter.square(direction, 0.0f, 0.0f, 1.0f, 1.0f, 0.5f); + break; + } + case UP: { + emitter.square(direction, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f); + emitter.cullFace(direction); + break; + } + default: { + emitter.square(direction, 0.0f, 0.5f, 1.0f, 1.0f, 0.0f); + emitter.cullFace(direction); + } + } + emitter.spriteBake(0, sprite, MutableQuadView.BAKE_LOCK_UV); + } + + @Override + public boolean isVanillaAdapter() { + return false; + } + + @Override + public void emitBlockQuads(BlockRenderView blockView, BlockState state, BlockPos pos, + Supplier randomSupplier, RenderContext context) { + context.meshConsumer().accept(mesh); + } + + @Override + public void emitItemQuads(ItemStack stack, Supplier randomSupplier, RenderContext context) { + context.meshConsumer().accept(mesh); + } + + @Override + public List getQuads(BlockState state, Direction face, Random random) { + return null; + } + + @Override + public boolean useAmbientOcclusion() { + return false; + } + + @Override + public boolean hasDepth() { + return false; + } + + @Override + public boolean isSideLit() { + return true; + } + + @Override + public boolean isBuiltin() { + return false; + } + + @Override + public Sprite getSprite() { + return this.sprites[0]; + } + + @Override + public ModelTransformation getTransformation() { + return this.transformation; + } + + @Override + public ModelOverrideList getOverrides() { + return ModelOverrideList.EMPTY; + } + + @Override + public Collection getModelDependencies() { + return Arrays.asList(DEFAULT_MODEL); + } + + @Override + public Collection getTextureDependencies(Function unbakedModelGetter, + Set> unresolvedTextureReferences) { + return Arrays.asList(spritesIDs); + } +} diff --git a/src/main/java/ru/betterend/registry/BlockRegistry.java b/src/main/java/ru/betterend/registry/BlockRegistry.java index 847bc5a5..38148cb4 100644 --- a/src/main/java/ru/betterend/registry/BlockRegistry.java +++ b/src/main/java/ru/betterend/registry/BlockRegistry.java @@ -30,6 +30,7 @@ import ru.betterend.blocks.EndStoneSmelter; import ru.betterend.blocks.EnderBlock; import ru.betterend.blocks.TerminiteBlock; import ru.betterend.blocks.basis.BlockGlowingFur; +import ru.betterend.blocks.basis.BlockSlab; import ru.betterend.blocks.basis.BlockVine; import ru.betterend.blocks.complex.WoodenMaterial; import ru.betterend.tab.CreativeTab; @@ -48,6 +49,7 @@ public class BlockRegistry { // Rocks // public static final Block FLAVOLITE = registerBlock("flavolite", new BlockStone(MaterialColor.SAND)); + public static final Block FLAVOLITE_SLAB = registerBlock("flavolite_slab", new BlockSlab(FLAVOLITE)); // Wooden Materials // public static final Block MOSSY_GLOWSHROOM_SAPLING = registerBlock("mossy_glowshroom_sapling", new BlockMossyGlowshroomSapling()); diff --git a/src/main/resources/assets/betterend/blockstates/flavolite_slab.json b/src/main/resources/assets/betterend/blockstates/flavolite_slab.json new file mode 100644 index 00000000..6984730e --- /dev/null +++ b/src/main/resources/assets/betterend/blockstates/flavolite_slab.json @@ -0,0 +1,13 @@ +{ + "variants": { + "type=bottom": { + "model": "betterend:block/flavolite_slab" + }, + "type=double": { + "model": "betterend:block/flavolite" + }, + "type=top": { + "model": "betterend:block/flavolite_slab_top" + } + } +} \ No newline at end of file