Try custom slab model. Json patterns.
This commit is contained in:
parent
287c1fce62
commit
59fe3183b0
60 changed files with 1557 additions and 144 deletions
6
json/block/%name%.json
Normal file
6
json/block/%name%.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/cube_all",
|
||||||
|
"textures": {
|
||||||
|
"all": "betterend:block/%name%"
|
||||||
|
}
|
||||||
|
}
|
8
json/block/%name%_brick_half_slab.json
Normal file
8
json/block/%name%_brick_half_slab.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"parent": "block/slab",
|
||||||
|
"textures": {
|
||||||
|
"bottom": "betterend:block/%name%_bricks",
|
||||||
|
"side": "betterend:block/%name%_bricks",
|
||||||
|
"top": "betterend:block/%name%_bricks"
|
||||||
|
}
|
||||||
|
}
|
8
json/block/%name%_brick_inner_stairs.json
Normal file
8
json/block/%name%_brick_inner_stairs.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"parent": "block/inner_stairs",
|
||||||
|
"textures": {
|
||||||
|
"bottom": "betterend:block/%name%_bricks",
|
||||||
|
"side": "betterend:block/%name%_bricks",
|
||||||
|
"top": "betterend:block/%name%_bricks"
|
||||||
|
}
|
||||||
|
}
|
8
json/block/%name%_brick_outer_stairs.json
Normal file
8
json/block/%name%_brick_outer_stairs.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"parent": "block/outer_stairs",
|
||||||
|
"textures": {
|
||||||
|
"bottom": "betterend:block/%name%_bricks",
|
||||||
|
"side": "betterend:block/%name%_bricks",
|
||||||
|
"top": "betterend:block/%name%_bricks"
|
||||||
|
}
|
||||||
|
}
|
8
json/block/%name%_brick_stairs.json
Normal file
8
json/block/%name%_brick_stairs.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"parent": "block/stairs",
|
||||||
|
"textures": {
|
||||||
|
"bottom": "betterend:block/%name%_bricks",
|
||||||
|
"side": "betterend:block/%name%_bricks",
|
||||||
|
"top": "betterend:block/%name%_bricks"
|
||||||
|
}
|
||||||
|
}
|
6
json/block/%name%_brick_wall_inventory.json
Normal file
6
json/block/%name%_brick_wall_inventory.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:block/wall_inventory",
|
||||||
|
"textures": {
|
||||||
|
"wall": "betterend:block/%name%_bricks"
|
||||||
|
}
|
||||||
|
}
|
6
json/block/%name%_brick_wall_post.json
Normal file
6
json/block/%name%_brick_wall_post.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:block/template_wall_post",
|
||||||
|
"textures": {
|
||||||
|
"wall": "betterend:block/%name%_bricks"
|
||||||
|
}
|
||||||
|
}
|
6
json/block/%name%_brick_wall_side.json
Normal file
6
json/block/%name%_brick_wall_side.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:block/template_wall_side",
|
||||||
|
"textures": {
|
||||||
|
"wall": "betterend:block/%name%_bricks"
|
||||||
|
}
|
||||||
|
}
|
6
json/block/%name%_brick_wall_side_tall.json
Normal file
6
json/block/%name%_brick_wall_side_tall.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:block/template_wall_side_tall",
|
||||||
|
"textures": {
|
||||||
|
"wall": "betterend:block/%name%_bricks"
|
||||||
|
}
|
||||||
|
}
|
6
json/block/%name%_bricks.json
Normal file
6
json/block/%name%_bricks.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/cube_all",
|
||||||
|
"textures": {
|
||||||
|
"all": "betterend:block/%name%_bricks"
|
||||||
|
}
|
||||||
|
}
|
6
json/block/%name%_button.json
Normal file
6
json/block/%name%_button.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/button",
|
||||||
|
"textures": {
|
||||||
|
"texture": "betterend:block/%name%"
|
||||||
|
}
|
||||||
|
}
|
6
json/block/%name%_button_inventory.json
Normal file
6
json/block/%name%_button_inventory.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/button_inventory",
|
||||||
|
"textures": {
|
||||||
|
"texture": "betterend:block/%name%"
|
||||||
|
}
|
||||||
|
}
|
6
json/block/%name%_button_pressed.json
Normal file
6
json/block/%name%_button_pressed.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/button_pressed",
|
||||||
|
"textures": {
|
||||||
|
"texture": "betterend:block/%name%"
|
||||||
|
}
|
||||||
|
}
|
8
json/block/%name%_half_slab.json
Normal file
8
json/block/%name%_half_slab.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"parent": "block/slab",
|
||||||
|
"textures": {
|
||||||
|
"bottom": "betterend:block/%name%",
|
||||||
|
"side": "betterend:block/%name%",
|
||||||
|
"top": "betterend:block/%name%"
|
||||||
|
}
|
||||||
|
}
|
8
json/block/%name%_inner_stairs.json
Normal file
8
json/block/%name%_inner_stairs.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"parent": "block/inner_stairs",
|
||||||
|
"textures": {
|
||||||
|
"bottom": "betterend:block/%name%",
|
||||||
|
"side": "betterend:block/%name%",
|
||||||
|
"top": "betterend:block/%name%"
|
||||||
|
}
|
||||||
|
}
|
8
json/block/%name%_outer_stairs.json
Normal file
8
json/block/%name%_outer_stairs.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"parent": "block/outer_stairs",
|
||||||
|
"textures": {
|
||||||
|
"bottom": "betterend:block/%name%",
|
||||||
|
"side": "betterend:block/%name%",
|
||||||
|
"top": "betterend:block/%name%"
|
||||||
|
}
|
||||||
|
}
|
7
json/block/%name%_pillar.json
Normal file
7
json/block/%name%_pillar.json
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:block/cube_column",
|
||||||
|
"textures": {
|
||||||
|
"end": "betterend:block/%name%_pillar_top",
|
||||||
|
"side": "betterend:block/%name%_pillar_side"
|
||||||
|
}
|
||||||
|
}
|
6
json/block/%name%_pressure_plate_down.json
Normal file
6
json/block/%name%_pressure_plate_down.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/pressure_plate_down",
|
||||||
|
"textures": {
|
||||||
|
"texture": "betterend:block/%name%"
|
||||||
|
}
|
||||||
|
}
|
6
json/block/%name%_pressure_plate_up.json
Normal file
6
json/block/%name%_pressure_plate_up.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/pressure_plate_up",
|
||||||
|
"textures": {
|
||||||
|
"texture": "betterend:block/%name%"
|
||||||
|
}
|
||||||
|
}
|
6
json/block/%name%_small_tiles.json
Normal file
6
json/block/%name%_small_tiles.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/cube_all",
|
||||||
|
"textures": {
|
||||||
|
"all": "betterend:block/%name%_small_tiles"
|
||||||
|
}
|
||||||
|
}
|
8
json/block/%name%_stairs.json
Normal file
8
json/block/%name%_stairs.json
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
{
|
||||||
|
"parent": "block/stairs",
|
||||||
|
"textures": {
|
||||||
|
"bottom": "betterend:block/%name%",
|
||||||
|
"side": "betterend:block/%name%",
|
||||||
|
"top": "betterend:block/%name%"
|
||||||
|
}
|
||||||
|
}
|
6
json/block/%name%_tile.json
Normal file
6
json/block/%name%_tile.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "block/cube_all",
|
||||||
|
"textures": {
|
||||||
|
"all": "betterend:block/%name%_tile"
|
||||||
|
}
|
||||||
|
}
|
6
json/block/%name%_wall_inventory.json
Normal file
6
json/block/%name%_wall_inventory.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:block/wall_inventory",
|
||||||
|
"textures": {
|
||||||
|
"wall": "betterend:block/%name%"
|
||||||
|
}
|
||||||
|
}
|
6
json/block/%name%_wall_post.json
Normal file
6
json/block/%name%_wall_post.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:block/template_wall_post",
|
||||||
|
"textures": {
|
||||||
|
"wall": "betterend:block/%name%"
|
||||||
|
}
|
||||||
|
}
|
6
json/block/%name%_wall_side.json
Normal file
6
json/block/%name%_wall_side.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:block/template_wall_side",
|
||||||
|
"textures": {
|
||||||
|
"wall": "betterend:block/%name%"
|
||||||
|
}
|
||||||
|
}
|
6
json/block/%name%_wall_side_tall.json
Normal file
6
json/block/%name%_wall_side_tall.json
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
"parent": "minecraft:block/template_wall_side_tall",
|
||||||
|
"textures": {
|
||||||
|
"wall": "betterend:block/%name%"
|
||||||
|
}
|
||||||
|
}
|
7
json/blockstates/%name%.json
Normal file
7
json/blockstates/%name%.json
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": {
|
||||||
|
"model": "betterend:block/%name%"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
15
json/blockstates/%name%_brick_slab.json
Normal file
15
json/blockstates/%name%_brick_slab.json
Normal file
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
209
json/blockstates/%name%_brick_stairs.json
Normal file
209
json/blockstates/%name%_brick_stairs.json
Normal file
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
90
json/blockstates/%name%_brick_wall.json
Normal file
90
json/blockstates/%name%_brick_wall.json
Normal file
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
7
json/blockstates/%name%_bricks.json
Normal file
7
json/blockstates/%name%_bricks.json
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": {
|
||||||
|
"model": "betterend:block/%name%_bricks"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
118
json/blockstates/%name%_button.json
Normal file
118
json/blockstates/%name%_button.json
Normal file
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
7
json/blockstates/%name%_pillar.json
Normal file
7
json/blockstates/%name%_pillar.json
Normal file
|
@ -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 }
|
||||||
|
}
|
||||||
|
}
|
10
json/blockstates/%name%_plate.json
Normal file
10
json/blockstates/%name%_plate.json
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"powered=false": {
|
||||||
|
"model": "betterend:block/%name%_pressure_plate_up"
|
||||||
|
},
|
||||||
|
"powered=true": {
|
||||||
|
"model": "betterend:block/%name%_pressure_plate_down"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
15
json/blockstates/%name%_slab.json
Normal file
15
json/blockstates/%name%_slab.json
Normal file
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
7
json/blockstates/%name%_small_tiles.json
Normal file
7
json/blockstates/%name%_small_tiles.json
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": {
|
||||||
|
"model": "betterend:block/%name%_small_tiles"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
209
json/blockstates/%name%_stairs.json
Normal file
209
json/blockstates/%name%_stairs.json
Normal file
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
7
json/blockstates/%name%_tile.json
Normal file
7
json/blockstates/%name%_tile.json
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"variants": {
|
||||||
|
"": {
|
||||||
|
"model": "betterend:block/%name%_tile"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
90
json/blockstates/%name%_wall.json
Normal file
90
json/blockstates/%name%_wall.json
Normal file
|
@ -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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
23
json/blockstates/a.txt
Normal file
23
json/blockstates/a.txt
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
’®¬ ¢ ãáâனá⢥ D ¨¬¥¥â ¬¥âªã Data
|
||||||
|
‘¥à¨©ë© ®¬¥à ⮬ : C7B5-F673
|
||||||
|
|
||||||
|
‘®¤¥à¦¨¬®¥ ¯ ¯ª¨ D:\BetterEnd\Utilities\src\data\stone\blockstates
|
||||||
|
|
||||||
|
11.10.2020 15:54 <DIR> .
|
||||||
|
11.10.2020 15:54 <DIR> ..
|
||||||
|
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 ¡ ©â ᢮¡®¤®
|
3
json/item/%name%.json
Normal file
3
json/item/%name%.json
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "betterend:block/%name%"
|
||||||
|
}
|
3
json/item/%name%_brick_slab.json
Normal file
3
json/item/%name%_brick_slab.json
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "betterend:block/%name%_brick_half_slab"
|
||||||
|
}
|
3
json/item/%name%_brick_stairs.json
Normal file
3
json/item/%name%_brick_stairs.json
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "betterend:block/%name%_brick_stairs"
|
||||||
|
}
|
3
json/item/%name%_brick_wall.json
Normal file
3
json/item/%name%_brick_wall.json
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "betterend:block/%name%_brick_wall_inventory"
|
||||||
|
}
|
3
json/item/%name%_bricks.json
Normal file
3
json/item/%name%_bricks.json
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "betterend:block/%name%_bricks"
|
||||||
|
}
|
3
json/item/%name%_button.json
Normal file
3
json/item/%name%_button.json
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "betterend:block/%name%_button_inventory"
|
||||||
|
}
|
3
json/item/%name%_pillar.json
Normal file
3
json/item/%name%_pillar.json
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "betterend:block/%name%_pillar"
|
||||||
|
}
|
3
json/item/%name%_plate.json
Normal file
3
json/item/%name%_plate.json
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "betterend:block/%name%_pressure_plate_up"
|
||||||
|
}
|
3
json/item/%name%_slab.json
Normal file
3
json/item/%name%_slab.json
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "betterend:block/%name%_half_slab"
|
||||||
|
}
|
3
json/item/%name%_small_tiles.json
Normal file
3
json/item/%name%_small_tiles.json
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "betterend:block/%name%_small_tiles"
|
||||||
|
}
|
3
json/item/%name%_stairs.json
Normal file
3
json/item/%name%_stairs.json
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "betterend:block/%name%_stairs"
|
||||||
|
}
|
3
json/item/%name%_tile.json
Normal file
3
json/item/%name%_tile.json
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "betterend:block/%name%_tile"
|
||||||
|
}
|
3
json/item/%name%_wall.json
Normal file
3
json/item/%name%_wall.json
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"parent": "betterend:block/%name%_wall_inventory"
|
||||||
|
}
|
23
json/item/a.txt
Normal file
23
json/item/a.txt
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
’®¬ ¢ ãáâனá⢥ D ¨¬¥¥â ¬¥âªã Data
|
||||||
|
‘¥à¨©ë© ®¬¥à ⮬ : C7B5-F673
|
||||||
|
|
||||||
|
‘®¤¥à¦¨¬®¥ ¯ ¯ª¨ D:\BetterEnd\Utilities\src\data\stone\item
|
||||||
|
|
||||||
|
11.10.2020 15:55 <DIR> .
|
||||||
|
11.10.2020 15:55 <DIR> ..
|
||||||
|
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 ¡ ©â ᢮¡®¤®
|
|
@ -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.mesh.QuadEmitter;
|
||||||
import net.fabricmc.fabric.api.renderer.v1.model.FabricBakedModel;
|
import net.fabricmc.fabric.api.renderer.v1.model.FabricBakedModel;
|
||||||
import net.fabricmc.fabric.api.renderer.v1.render.RenderContext;
|
import net.fabricmc.fabric.api.renderer.v1.render.RenderContext;
|
||||||
|
|
||||||
import net.minecraft.block.BlockState;
|
import net.minecraft.block.BlockState;
|
||||||
import net.minecraft.client.render.model.BakedModel;
|
import net.minecraft.client.render.model.BakedModel;
|
||||||
import net.minecraft.client.render.model.BakedQuad;
|
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.Sprite;
|
||||||
import net.minecraft.client.texture.SpriteAtlasTexture;
|
import net.minecraft.client.texture.SpriteAtlasTexture;
|
||||||
import net.minecraft.client.util.SpriteIdentifier;
|
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.item.ItemStack;
|
||||||
import net.minecraft.util.Identifier;
|
import net.minecraft.util.Identifier;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.Direction;
|
import net.minecraft.util.math.Direction;
|
||||||
import net.minecraft.world.BlockRenderView;
|
import net.minecraft.world.BlockRenderView;
|
||||||
|
|
||||||
import ru.betterend.BetterEnd;
|
import ru.betterend.BetterEnd;
|
||||||
|
|
||||||
public class BaseBlockModel implements UnbakedModel, BakedModel, FabricBakedModel {
|
public class BaseBlockModel implements UnbakedModel, BakedModel, FabricBakedModel {
|
||||||
|
@ -70,15 +70,9 @@ public class BaseBlockModel implements UnbakedModel, BakedModel, FabricBakedMode
|
||||||
MeshBuilder builder = renderer.meshBuilder();
|
MeshBuilder builder = renderer.meshBuilder();
|
||||||
QuadEmitter emitter = builder.getEmitter();
|
QuadEmitter emitter = builder.getEmitter();
|
||||||
|
|
||||||
Vector3f rotation = AffineTransformation.getLinearTransformationAndTranslationFromAffine(rotationContainer.getRotation().getMatrix()).getSecond();
|
|
||||||
|
|
||||||
System.out.println("=====");
|
|
||||||
System.out.println(rotation);
|
|
||||||
|
|
||||||
Direction[] directions = Direction.values();
|
Direction[] directions = Direction.values();
|
||||||
for (Direction direction : directions) {
|
for (Direction direction : directions) {
|
||||||
Direction rotate = Direction.transform(rotationContainer.getRotation().getMatrix(), direction);
|
emitter.square(direction, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f);
|
||||||
this.rotate(emitter, direction, rotate);
|
|
||||||
switch (sprites.length) {
|
switch (sprites.length) {
|
||||||
case 1: {
|
case 1: {
|
||||||
emitter.spriteBake(0, sprites[0], MutableQuadView.BAKE_LOCK_UV);
|
emitter.spriteBake(0, sprites[0], MutableQuadView.BAKE_LOCK_UV);
|
||||||
|
@ -160,138 +154,7 @@ public class BaseBlockModel implements UnbakedModel, BakedModel, FabricBakedMode
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void rotate(QuadEmitter emitter, Direction direction, Direction rotation) {
|
@Override
|
||||||
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
|
|
||||||
public boolean isVanillaAdapter() {
|
public boolean isVanillaAdapter() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,9 @@ public class EndModelProvider implements ModelResourceProvider {
|
||||||
|
|
||||||
private static final Map<Identifier, UnbakedModel> MODELS;
|
private static final Map<Identifier, UnbakedModel> 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) {
|
public static void registerModel(String path, UnbakedModel model) {
|
||||||
MODELS.put(BetterEnd.makeID(path), model);
|
MODELS.put(BetterEnd.makeID(path), model);
|
||||||
|
@ -34,7 +36,10 @@ public class EndModelProvider implements ModelResourceProvider {
|
||||||
static {
|
static {
|
||||||
MODELS = Maps.newHashMap();
|
MODELS = Maps.newHashMap();
|
||||||
|
|
||||||
registerModel("block/flavolite", BASE_BLOCK_MODEL);
|
registerModel("item/flavolite", FLAVOLITE_BLOCK);
|
||||||
registerModel("item/flavolite", BASE_BLOCK_MODEL);
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
240
src/main/java/ru/betterend/blocks/model/SlabModel.java
Normal file
240
src/main/java/ru/betterend/blocks/model/SlabModel.java
Normal file
|
@ -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<SpriteIdentifier, Sprite> 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<Random> randomSupplier, RenderContext context) {
|
||||||
|
context.meshConsumer().accept(mesh);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void emitItemQuads(ItemStack stack, Supplier<Random> randomSupplier, RenderContext context) {
|
||||||
|
context.meshConsumer().accept(mesh);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<BakedQuad> 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<Identifier> getModelDependencies() {
|
||||||
|
return Arrays.asList(DEFAULT_SLAB_MODEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<SpriteIdentifier> getTextureDependencies(Function<Identifier, UnbakedModel> unbakedModelGetter,
|
||||||
|
Set<Pair<String, String>> unresolvedTextureReferences) {
|
||||||
|
return Arrays.asList(spritesIDs);
|
||||||
|
}
|
||||||
|
}
|
241
src/main/java/ru/betterend/blocks/model/SlabTopModel.java
Normal file
241
src/main/java/ru/betterend/blocks/model/SlabTopModel.java
Normal file
|
@ -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<SpriteIdentifier, Sprite> 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<Random> randomSupplier, RenderContext context) {
|
||||||
|
context.meshConsumer().accept(mesh);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void emitItemQuads(ItemStack stack, Supplier<Random> randomSupplier, RenderContext context) {
|
||||||
|
context.meshConsumer().accept(mesh);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<BakedQuad> 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<Identifier> getModelDependencies() {
|
||||||
|
return Arrays.asList(DEFAULT_MODEL);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Collection<SpriteIdentifier> getTextureDependencies(Function<Identifier, UnbakedModel> unbakedModelGetter,
|
||||||
|
Set<Pair<String, String>> unresolvedTextureReferences) {
|
||||||
|
return Arrays.asList(spritesIDs);
|
||||||
|
}
|
||||||
|
}
|
|
@ -30,6 +30,7 @@ import ru.betterend.blocks.EndStoneSmelter;
|
||||||
import ru.betterend.blocks.EnderBlock;
|
import ru.betterend.blocks.EnderBlock;
|
||||||
import ru.betterend.blocks.TerminiteBlock;
|
import ru.betterend.blocks.TerminiteBlock;
|
||||||
import ru.betterend.blocks.basis.BlockGlowingFur;
|
import ru.betterend.blocks.basis.BlockGlowingFur;
|
||||||
|
import ru.betterend.blocks.basis.BlockSlab;
|
||||||
import ru.betterend.blocks.basis.BlockVine;
|
import ru.betterend.blocks.basis.BlockVine;
|
||||||
import ru.betterend.blocks.complex.WoodenMaterial;
|
import ru.betterend.blocks.complex.WoodenMaterial;
|
||||||
import ru.betterend.tab.CreativeTab;
|
import ru.betterend.tab.CreativeTab;
|
||||||
|
@ -48,6 +49,7 @@ public class BlockRegistry {
|
||||||
|
|
||||||
// Rocks //
|
// Rocks //
|
||||||
public static final Block FLAVOLITE = registerBlock("flavolite", new BlockStone(MaterialColor.SAND));
|
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 //
|
// Wooden Materials //
|
||||||
public static final Block MOSSY_GLOWSHROOM_SAPLING = registerBlock("mossy_glowshroom_sapling", new BlockMossyGlowshroomSapling());
|
public static final Block MOSSY_GLOWSHROOM_SAPLING = registerBlock("mossy_glowshroom_sapling", new BlockMossyGlowshroomSapling());
|
||||||
|
|
|
@ -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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue