diff --git a/.vscode/java-formatter.xml b/.vscode/java-formatter.xml
new file mode 100644
index 00000000..63127add
--- /dev/null
+++ b/.vscode/java-formatter.xml
@@ -0,0 +1,382 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 00000000..bba35055
--- /dev/null
+++ b/.vscode/settings.json
@@ -0,0 +1,4 @@
+{
+ "python.linting.enabled": false,
+ "java.format.settings.url": ".vscode/java-formatter.xml"
+}
\ No newline at end of file
diff --git a/Lava/bin/main/.cache/cache b/Lava/bin/main/.cache/cache
index 49aeccf9..6ba1068d 100644
--- a/Lava/bin/main/.cache/cache
+++ b/Lava/bin/main/.cache/cache
@@ -1,19 +1,19 @@
90595d326540bf223462a02b4bcaa81a3bd194b1 assets/lava/blockstates/frame_block.json
+ced7584cec36346b81260c3cc2418d27ffa4dfc8 assets/lava/blockstates/frame_slope.json
494e23d0a9aed63796aaa9f378cc809a4be27e53 assets/lava/blockstates/obsidian_inscriptions.json
-de36b5b81a2245be2d9391f4ae0e25c4178763fa assets/lava/blockstates/slope_block.json
-5aa65a428b33ae4e05334260a9f65c9145391790 assets/lava/lang/en_us.json
+5e1e0f17f506c3813014026d479039f9228cfddc assets/lava/lang/en_us.json
4b88186f152d08a3e44043b66a67720c3432612d assets/lava/models/block/frame_block.json
+cbc1219031a11c8d06d4129e5b9aedd908f37459 assets/lava/models/block/frame_slope.json
09ea66eb20504f43933dce0385782a3718b1918e assets/lava/models/block/obsidian_inscriptions.json
-b108610a0b46e0eeeed39458e7cc30990c4eca19 assets/lava/models/block/slope_block.json
3850f55f19aee5529a61494d3077a2bf10bf463f assets/lava/models/item/frame_block.json
+f4ad69a85828d58345b3d209a368c32511caa4c5 assets/lava/models/item/frame_slope.json
1a3c6cdc93ee5c2661bc74a9a33af4d600f1a9ee assets/lava/models/item/obsidian_inscriptions.json
-c0151ceb74228da4157c2c5ba63259e38e807fef assets/lava/models/item/slope_block.json
17858ececa5137634dba4e06fc832a58be42ceb7 data/lava/advancements/recipes/lavamod/frame_block.json
c15c5fb2dc713da047191928998c4fd0389682b8 data/lava/loot_tables/blocks/frame_block.json
-306f4ae3f2dc438a8a2765768ec165c2a9840c73 data/lava/loot_tables/blocks/slope_block.json
+108b1f07bf7d003ca97806c923505bd5a9c585ab data/lava/loot_tables/blocks/frame_slope.json
6c55dd61b4aa29f5acbf8a9b06ceb25ae0b72f54 data/lava/recipes/frame_block.json
f1c19212f7fdbd50678b53e9bf602197e68a64bd data/minecraft/tags/blocks/dragon_immune.json
-5c4fa0ac8501475f752ee89b30ea0e177f7be439 data/minecraft/tags/blocks/mineable/axe.json
+cae65ed3db29d1635aa6c38441ea714650162c64 data/minecraft/tags/blocks/mineable/axe.json
f1c19212f7fdbd50678b53e9bf602197e68a64bd data/minecraft/tags/blocks/mineable/pickaxe.json
f1c19212f7fdbd50678b53e9bf602197e68a64bd data/minecraft/tags/blocks/needs_diamond_tool.json
-362e67a7e0c65f9794952f6f0fc58a7cc06f0092 data/minecraft/tags/blocks/needs_stone_tool.json
+6b03b0dfdf07bd4de67776d9cfc1f2a76a2353a3 data/minecraft/tags/blocks/needs_stone_tool.json
diff --git a/Lava/bin/main/.gitignore b/Lava/bin/main/.gitignore
index 88451a9a..9624d119 100644
--- a/Lava/bin/main/.gitignore
+++ b/Lava/bin/main/.gitignore
@@ -1 +1,3 @@
+/.cache/
+/assets/
/se/
diff --git a/Lava/bin/main/assets/lava/blockstates/slope_block.json b/Lava/bin/main/assets/lava/blockstates/frame_slope.json
similarity index 52%
rename from Lava/bin/main/assets/lava/blockstates/slope_block.json
rename to Lava/bin/main/assets/lava/blockstates/frame_slope.json
index e7fe1458..9ebf0ed0 100644
--- a/Lava/bin/main/assets/lava/blockstates/slope_block.json
+++ b/Lava/bin/main/assets/lava/blockstates/frame_slope.json
@@ -1,18 +1,18 @@
{
"variants": {
"facing=north": {
- "model": "lava:block/slope_block"
+ "model": "lava:block/frame_slope"
},
"facing=south": {
- "model": "lava:block/slope_block",
+ "model": "lava:block/frame_slope",
"y": 180
},
"facing=west": {
- "model": "lava:block/slope_block",
+ "model": "lava:block/frame_slope",
"y": 270
},
"facing=east": {
- "model": "lava:block/slope_block",
+ "model": "lava:block/frame_slope",
"y": 90
}
}
diff --git a/Lava/bin/main/assets/lava/blockstates/frame_stairs.json b/Lava/bin/main/assets/lava/blockstates/frame_stairs.json
new file mode 100644
index 00000000..61f77c39
--- /dev/null
+++ b/Lava/bin/main/assets/lava/blockstates/frame_stairs.json
@@ -0,0 +1,174 @@
+{
+ "variants": {
+ "facing=east,half=bottom,shape=inner_left": {
+ "model": "lava:block/frame_stairs_inner",
+ "y": 270
+ },
+ "facing=east,half=bottom,shape=inner_right": {
+ "model": "lava:block/frame_stairs_inner"
+ },
+ "facing=east,half=bottom,shape=outer_left": {
+ "model": "lava:block/frame_stairs_outer",
+ "y": 270
+ },
+ "facing=east,half=bottom,shape=outer_right": {
+ "model": "lava:block/frame_stairs_outer"
+ },
+ "facing=east,half=bottom,shape=straight": {
+ "model": "lava:block/frame_stairs"
+ },
+ "facing=east,half=top,shape=inner_left": {
+ "model": "lava:block/frame_stairs_inner",
+ "x": 180
+ },
+ "facing=east,half=top,shape=inner_right": {
+ "model": "lava:block/frame_stairs_inner",
+ "x": 180,
+ "y": 90
+ },
+ "facing=east,half=top,shape=outer_left": {
+ "model": "lava:block/frame_stairs_outer",
+ "x": 180
+ },
+ "facing=east,half=top,shape=outer_right": {
+ "model": "lava:block/frame_stairs_outer",
+ "x": 180,
+ "y": 90
+ },
+ "facing=east,half=top,shape=straight": {
+ "model": "lava:block/frame_stairs",
+ "x": 180
+ },
+ "facing=north,half=bottom,shape=inner_left": {
+ "model": "lava:block/frame_stairs_inner",
+ "y": 180
+ },
+ "facing=north,half=bottom,shape=inner_right": {
+ "model": "lava:block/frame_stairs_inner",
+ "y": 270
+ },
+ "facing=north,half=bottom,shape=outer_left": {
+ "model": "lava:block/frame_stairs_outer",
+ "y": 180
+ },
+ "facing=north,half=bottom,shape=outer_right": {
+ "model": "lava:block/frame_stairs_outer",
+ "y": 270
+ },
+ "facing=north,half=bottom,shape=straight": {
+ "model": "lava:block/frame_stairs",
+ "y": 270
+ },
+ "facing=north,half=top,shape=inner_left": {
+ "model": "lava:block/frame_stairs_inner",
+ "x": 180,
+ "y": 270
+ },
+ "facing=north,half=top,shape=inner_right": {
+ "model": "lava:block/frame_stairs_inner",
+ "x": 180
+ },
+ "facing=north,half=top,shape=outer_left": {
+ "model": "lava:block/frame_stairs_outer",
+ "x": 180,
+ "y": 270
+ },
+ "facing=north,half=top,shape=outer_right": {
+ "model": "lava:block/frame_stairs_outer",
+ "x": 180
+ },
+ "facing=north,half=top,shape=straight": {
+ "model": "lava:block/frame_stairs",
+ "x": 180,
+ "y": 270
+ },
+ "facing=south,half=bottom,shape=inner_left": {
+ "model": "lava:block/frame_stairs_inner"
+ },
+ "facing=south,half=bottom,shape=inner_right": {
+ "model": "lava:block/frame_stairs_inner",
+ "y": 90
+ },
+ "facing=south,half=bottom,shape=outer_left": {
+ "model": "lava:block/frame_stairs_outer"
+ },
+ "facing=south,half=bottom,shape=outer_right": {
+ "model": "lava:block/frame_stairs_outer",
+ "y": 90
+ },
+ "facing=south,half=bottom,shape=straight": {
+ "model": "lava:block/frame_stairs",
+ "y": 90
+ },
+ "facing=south,half=top,shape=inner_left": {
+ "model": "lava:block/frame_stairs_inner",
+ "x": 180,
+ "y": 90
+ },
+ "facing=south,half=top,shape=inner_right": {
+ "model": "lava:block/frame_stairs_inner",
+ "x": 180,
+ "y": 180
+ },
+ "facing=south,half=top,shape=outer_left": {
+ "model": "lava:block/frame_stairs_outer",
+ "x": 180,
+ "y": 90
+ },
+ "facing=south,half=top,shape=outer_right": {
+ "model": "lava:block/frame_stairs_outer",
+ "x": 180,
+ "y": 180
+ },
+ "facing=south,half=top,shape=straight": {
+ "model": "lava:block/frame_stairs",
+ "x": 180,
+ "y": 90
+ },
+ "facing=west,half=bottom,shape=inner_left": {
+ "model": "lava:block/frame_stairs_inner",
+ "y": 90
+ },
+ "facing=west,half=bottom,shape=inner_right": {
+ "model": "lava:block/frame_stairs_inner",
+ "y": 180
+ },
+ "facing=west,half=bottom,shape=outer_left": {
+ "model": "lava:block/frame_stairs_outer",
+ "y": 90
+ },
+ "facing=west,half=bottom,shape=outer_right": {
+ "model": "lava:block/frame_stairs_outer",
+ "y": 180
+ },
+ "facing=west,half=bottom,shape=straight": {
+ "model": "lava:block/frame_stairs",
+ "y": 180
+ },
+ "facing=west,half=top,shape=inner_left": {
+ "model": "lava:block/frame_stairs_inner",
+ "x": 180,
+ "y": 180
+ },
+ "facing=west,half=top,shape=inner_right": {
+ "model": "lava:block/frame_stairs_inner",
+ "x": 180,
+ "y": 270
+ },
+ "facing=west,half=top,shape=outer_left": {
+ "model": "lava:block/frame_stairs_outer",
+ "x": 180,
+ "y": 180
+ },
+ "facing=west,half=top,shape=outer_right": {
+ "model": "lava:block/frame_stairs_outer",
+ "x": 180,
+ "y": 270
+ },
+ "facing=west,half=top,shape=straight": {
+ "model": "lava:block/frame_stairs",
+ "x": 180,
+ "y": 180
+ }
+ }
+}
\ No newline at end of file
diff --git a/Lava/bin/main/assets/lava/lang/en_us.json b/Lava/bin/main/assets/lava/lang/en_us.json
index 540ad3fd..a85d5963 100644
--- a/Lava/bin/main/assets/lava/lang/en_us.json
+++ b/Lava/bin/main/assets/lava/lang/en_us.json
@@ -1,6 +1,8 @@
{
"block.lava.frame_block": "Frame Block",
+ "block.lava.frame_slab": "Frame Slab Block",
+ "block.lava.frame_slope": "Frame Slope Block",
+ "block.lava.frame_stairs": "Frame Stair Block",
"block.lava.obsidian_inscriptions": "Obsidian Inscriptions",
- "block.lava.slope_block": "Slope Block",
"itemGroup.lavamod": "Lava"
}
\ No newline at end of file
diff --git a/Lava/bin/main/assets/lava/models/block/frame_slab.json b/Lava/bin/main/assets/lava/models/block/frame_slab.json
new file mode 100644
index 00000000..7a5d94be
--- /dev/null
+++ b/Lava/bin/main/assets/lava/models/block/frame_slab.json
@@ -0,0 +1,24 @@
+{
+ "credit": "Made with Blockbench",
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "0": "lava:block/frame_block",
+ "1": "lava:block/frame_block_stair_side",
+ "particle": "lava:block/frame_block"
+ },
+ "elements": [
+ {
+ "name": "Slab",
+ "from": [0, 0, 0],
+ "to": [16, 8, 16],
+ "faces": {
+ "north": {"uv": [0, 8, 16, 16], "texture": "#1", "cullface": "north"},
+ "east": {"uv": [0, 8, 16, 16], "texture": "#1", "cullface": "east"},
+ "south": {"uv": [0, 8, 16, 16], "texture": "#1", "cullface": "south"},
+ "west": {"uv": [0, 8, 16, 16], "texture": "#1", "cullface": "west"},
+ "up": {"uv": [0, 0, 16, 16], "texture": "#0"},
+ "down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"}
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Lava/bin/main/assets/lava/models/block/frame_slab_top.json b/Lava/bin/main/assets/lava/models/block/frame_slab_top.json
new file mode 100644
index 00000000..d60478e9
--- /dev/null
+++ b/Lava/bin/main/assets/lava/models/block/frame_slab_top.json
@@ -0,0 +1,24 @@
+{
+ "credit": "Made with Blockbench",
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "0": "lava:block/frame_block_stair_side",
+ "1": "lava:block/frame_block",
+ "particle": "lava:block/frame_block_stair_side"
+ },
+ "elements": [
+ {
+ "name": "Slab",
+ "from": [0, 8, 0],
+ "to": [16, 16, 16],
+ "faces": {
+ "north": {"uv": [16, 16, 0, 8], "texture": "#0", "cullface": "north"},
+ "east": {"uv": [0, 16, 16, 8], "texture": "#0", "cullface": "east"},
+ "south": {"uv": [0, 16, 16, 8], "texture": "#0", "cullface": "south"},
+ "west": {"uv": [0, 16, 16, 8], "texture": "#0", "cullface": "west"},
+ "up": {"uv": [0, 0, 16, 16], "texture": "#1", "cullface": "up"},
+ "down": {"uv": [0, 0, 16, 16], "texture": "#1"}
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Lava/src/main/resources/assets/lava/models/block/slope_block.json b/Lava/bin/main/assets/lava/models/block/frame_slope.json
similarity index 68%
rename from Lava/src/main/resources/assets/lava/models/block/slope_block.json
rename to Lava/bin/main/assets/lava/models/block/frame_slope.json
index 15b8d178..dc328f21 100644
--- a/Lava/src/main/resources/assets/lava/models/block/slope_block.json
+++ b/Lava/bin/main/assets/lava/models/block/frame_slope.json
@@ -1,11 +1,14 @@
{
+ "credit": "Made with Blockbench",
+ "parent": "minecraft:block/cube_all",
"textures": {
"0": "lava:block/frame_block",
- "1": "lava:block/frame_slope_slide",
+ "1": "lava:block/frame_slope_side",
"particle": "lava:block/frame_block"
},
"elements": [
{
+ "name": "Front",
"from": [0, 0, 0],
"to": [16, 22.63, 0],
"rotation": {"angle": 45, "axis": "x", "origin": [0, 0, 0]},
@@ -19,6 +22,7 @@
}
},
{
+ "name": "Back",
"from": [0, 0, 16],
"to": [16, 16, 16],
"faces": {
@@ -31,6 +35,7 @@
}
},
{
+ "name": "Bottom",
"from": [0, 0.01, 0],
"to": [16, 0.01, 16],
"faces": {
@@ -43,29 +48,30 @@
}
},
{
+ "name": "Side, west",
"from": [0, 0, 0],
- "to": [0, 22.63, 12],
- "rotation": {"angle": 45, "axis": "x", "origin": [0, 0, 0]},
+ "to": [0, 16, 16],
"faces": {
- "north": {"uv": [0, 0, 12, 0], "rotation": 270, "texture": "#missing"},
- "east": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#1"},
- "south": {"uv": [0, 0, 12, 0], "rotation": 90, "texture": "#missing"},
- "west": {"uv": [0, 0, 16, 16], "texture": "#1"},
- "up": {"uv": [0, 0, 16, 0], "rotation": 90, "texture": "#missing"},
- "down": {"uv": [0, 0, 16, 0], "rotation": 90, "texture": "#missing"}
+ "north": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "east": {"uv": [0, 0, 16, 16], "texture": "#1"},
+ "south": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "west": {"uv": [16, 0, 0, 16], "texture": "#1"},
+ "up": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "down": {"uv": [0, 0, 0, 16], "texture": "#missing"}
}
},
{
+ "name": "Side, east",
"from": [16, 0, 0],
- "to": [16, 22.63, 12],
- "rotation": {"angle": 45, "axis": "x", "origin": [0, 0, 0]},
+ "to": [16, 16, 16],
+ "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]},
"faces": {
- "north": {"uv": [0, 0, 12, 0], "rotation": 270, "texture": "#missing"},
- "east": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#1"},
- "south": {"uv": [0, 0, 12, 0], "rotation": 90, "texture": "#missing"},
- "west": {"uv": [0, 0, 16, 16], "texture": "#1"},
- "up": {"uv": [0, 0, 16, 0], "rotation": 90, "texture": "#missing"},
- "down": {"uv": [0, 0, 16, 0], "rotation": 90, "texture": "#missing"}
+ "north": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "east": {"uv": [0, 0, 16, 16], "texture": "#1"},
+ "south": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "west": {"uv": [16, 0, 0, 16], "texture": "#1"},
+ "up": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "down": {"uv": [0, 0, 0, 16], "texture": "#missing"}
}
}
],
diff --git a/Lava/bin/main/assets/lava/models/block/frame_slope_inner.json b/Lava/bin/main/assets/lava/models/block/frame_slope_inner.json
new file mode 100644
index 00000000..57f6c002
--- /dev/null
+++ b/Lava/bin/main/assets/lava/models/block/frame_slope_inner.json
@@ -0,0 +1,144 @@
+{
+ "credit": "Made with Blockbench",
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "0": "lava:block/frame_block",
+ "2": "lava:block/frame_slope_front",
+ "3": "lava:block/frame_slope_side",
+ "particle": "lava:block/frame_block"
+ },
+ "elements": [
+ {
+ "name": "Bottom",
+ "from": [0, 0.01, 0],
+ "to": [16, 0.01, 16],
+ "faces": {
+ "north": {"uv": [0, 0, 16, 0], "rotation": 180, "texture": "#missing"},
+ "east": {"uv": [0, 0, 0, 16], "rotation": 90, "texture": "#missing"},
+ "south": {"uv": [0, 0, 16, 0], "texture": "#missing"},
+ "west": {"uv": [0, 0, 0, 16], "rotation": 270, "texture": "#missing"},
+ "up": {"uv": [0, 0, 16, 16], "texture": "#0"},
+ "down": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#0"}
+ }
+ },
+ {
+ "name": "Back, south",
+ "from": [0, 0, 16],
+ "to": [16, 16, 16],
+ "faces": {
+ "north": {"uv": [0, 0, 16, 16], "texture": "#0"},
+ "east": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "south": {"uv": [0, 0, 16, 16], "texture": "#0"},
+ "west": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "up": {"uv": [0, 0, 16, 0], "texture": "#missing"},
+ "down": {"uv": [0, 0, 16, 0], "texture": "#missing"}
+ }
+ },
+ {
+ "name": "Front, north",
+ "from": [0, 0, 0],
+ "to": [16, 22.63, 0],
+ "rotation": {"angle": 45, "axis": "x", "origin": [0, 0, 0]},
+ "faces": {
+ "north": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#2"},
+ "east": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "south": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#2"},
+ "west": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "up": {"uv": [0, 0, 16, 0], "texture": "#missing"},
+ "down": {"uv": [0, 0, 16, 0], "texture": "#missing"}
+ }
+ },
+ {
+ "name": "Front, west",
+ "from": [0, 0, 0],
+ "to": [22.63, 0, 16],
+ "rotation": {"angle": 45, "axis": "z", "origin": [0, 0, 0]},
+ "faces": {
+ "north": {"uv": [0, 0, 0, 16], "rotation": 270, "texture": "#missing"},
+ "east": {"uv": [0, 0, 16, 0], "texture": "#missing"},
+ "south": {"uv": [0, 0, 0, 16], "rotation": 90, "texture": "#missing"},
+ "west": {"uv": [0, 0, 16, 0], "rotation": 180, "texture": "#missing"},
+ "up": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#2"},
+ "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#2"}
+ }
+ },
+ {
+ "name": "Side, north",
+ "from": [0, 0, 0],
+ "to": [16, 16, 0],
+ "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]},
+ "faces": {
+ "north": {"uv": [0, 0, 16, 16], "texture": "#3"},
+ "east": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "south": {"uv": [16, 0, 0, 16], "texture": "#3"},
+ "west": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "up": {"uv": [0, 0, 0, 16], "rotation": 270, "texture": "#missing"},
+ "down": {"uv": [0, 0, 0, 16], "rotation": 90, "texture": "#missing"}
+ }
+ },
+ {
+ "name": "Side, west",
+ "from": [0, 0, 0],
+ "to": [0, 16, 16],
+ "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]},
+ "faces": {
+ "north": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "east": {"uv": [0, 0, 16, 16], "texture": "#3"},
+ "south": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "west": {"uv": [16, 0, 0, 16], "texture": "#3"},
+ "up": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "down": {"uv": [0, 0, 0, 16], "texture": "#missing"}
+ }
+ },
+ {
+ "name": "Back, east",
+ "from": [16, 0, 0],
+ "to": [16, 16, 16],
+ "faces": {
+ "north": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "east": {"uv": [0, 0, 16, 16], "texture": "#0"},
+ "south": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "west": {"uv": [0, 0, 16, 16], "texture": "#0"},
+ "up": {"uv": [0, 0, 16, 0], "rotation": 90, "texture": "#missing"},
+ "down": {"uv": [0, 0, 16, 0], "rotation": 270, "texture": "#missing"}
+ }
+ }
+ ],
+ "display": {
+ "thirdperson_righthand": {
+ "rotation": [-180, 1, 0],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "thirdperson_lefthand": {
+ "rotation": [-180, 0, 0],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "firstperson_righthand": {
+ "rotation": [-180, 0, 0],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "firstperson_lefthand": {
+ "rotation": [-180, 0, 0],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "ground": {
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "gui": {
+ "rotation": [-19, -41, 0],
+ "scale": [0.6, 0.6, 0.6]
+ },
+ "fixed": {
+ "rotation": [0, -90, 0],
+ "scale": [0.09, 1, 1]
+ }
+ },
+ "groups": [
+ {
+ "name": "VoxelShapes",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [0, 1, 2, 3, 4, 5, 6]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Lava/bin/main/assets/lava/models/block/frame_slope_outer.json b/Lava/bin/main/assets/lava/models/block/frame_slope_outer.json
new file mode 100644
index 00000000..fa0c3771
--- /dev/null
+++ b/Lava/bin/main/assets/lava/models/block/frame_slope_outer.json
@@ -0,0 +1,118 @@
+{
+ "credit": "Made with Blockbench",
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "0": "lava:block/frame_block",
+ "2": "lava:block/frame_slope_front",
+ "3": "lava:block/frame_slope_side",
+ "particle": "lava:block/frame_block"
+ },
+ "elements": [
+ {
+ "name": "Front, north",
+ "from": [0, 0, 0],
+ "to": [16, 22.63, 0],
+ "rotation": {"angle": 45, "axis": "x", "origin": [0, 0, 0]},
+ "faces": {
+ "north": {"uv": [0, 0, 16, 16], "texture": "#2"},
+ "east": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "south": {"uv": [16, 0, 0, 16], "texture": "#2"},
+ "west": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "up": {"uv": [0, 0, 16, 0], "texture": "#missing"},
+ "down": {"uv": [0, 0, 16, 0], "texture": "#missing"}
+ }
+ },
+ {
+ "name": "Bottom",
+ "from": [0, 0.01, 0],
+ "to": [16, 0.01, 16],
+ "faces": {
+ "north": {"uv": [0, 0, 16, 0], "rotation": 180, "texture": "#missing"},
+ "east": {"uv": [0, 0, 0, 16], "rotation": 90, "texture": "#missing"},
+ "south": {"uv": [0, 0, 16, 0], "texture": "#missing"},
+ "west": {"uv": [0, 0, 0, 16], "rotation": 270, "texture": "#missing"},
+ "up": {"uv": [0, 0, 16, 16], "texture": "#0"},
+ "down": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#0"}
+ }
+ },
+ {
+ "name": "Front, west",
+ "from": [0, 0, 0],
+ "to": [0, 22.63, 16],
+ "rotation": {"angle": -45, "axis": "z", "origin": [0, 0, 0]},
+ "faces": {
+ "north": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "east": {"uv": [0, 0, 16, 16], "texture": "#2"},
+ "south": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "west": {"uv": [16, 0, 0, 16], "texture": "#2"},
+ "up": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "down": {"uv": [0, 0, 0, 16], "texture": "#missing"}
+ }
+ },
+ {
+ "name": "Back, south",
+ "from": [0, 0, 16],
+ "to": [16, 16, 16],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 16]},
+ "faces": {
+ "north": {"uv": [0, 0, 16, 16], "texture": "#3"},
+ "east": {"uv": [0, 0, 0, 16], "texture": "#2"},
+ "south": {"uv": [16, 0, 0, 16], "texture": "#3"},
+ "west": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "up": {"uv": [0, 0, 16, 0], "texture": "#missing"},
+ "down": {"uv": [0, 0, 16, 0], "texture": "#missing"}
+ }
+ },
+ {
+ "name": "Back, east",
+ "from": [16, 0, 0],
+ "to": [16, 16, 16],
+ "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]},
+ "faces": {
+ "north": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "east": {"uv": [0, 0, 16, 16], "texture": "#3"},
+ "south": {"uv": [0, 0, 0, 16], "texture": "#2"},
+ "west": {"uv": [16, 0, 0, 16], "texture": "#3"},
+ "up": {"uv": [0, 0, 16, 0], "rotation": 90, "texture": "#missing"},
+ "down": {"uv": [0, 0, 16, 0], "rotation": 270, "texture": "#missing"}
+ }
+ }
+ ],
+ "display": {
+ "thirdperson_righthand": {
+ "rotation": [-180, 1, 0],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "thirdperson_lefthand": {
+ "rotation": [-180, 0, 0],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "firstperson_righthand": {
+ "rotation": [-180, 0, 0],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "firstperson_lefthand": {
+ "rotation": [-180, 0, 0],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "ground": {
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "gui": {
+ "rotation": [-19, -41, 0],
+ "scale": [0.6, 0.6, 0.6]
+ },
+ "fixed": {
+ "rotation": [0, -90, 0],
+ "scale": [0.09, 1, 1]
+ }
+ },
+ "groups": [
+ {
+ "name": "VoxelShapes",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [0, 1, 2, 3, 4]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Lava/bin/main/assets/lava/models/block/frame_stairs.json b/Lava/bin/main/assets/lava/models/block/frame_stairs.json
new file mode 100644
index 00000000..269a2719
--- /dev/null
+++ b/Lava/bin/main/assets/lava/models/block/frame_stairs.json
@@ -0,0 +1,64 @@
+{
+ "credit": "Made with Blockbench",
+ "textures": {
+ "1": "lava:block/frame_block_stair_side",
+ "3": "lava:block/frame_block",
+ "particle": "lava:block/frame_block"
+ },
+ "elements": [
+ {
+ "from": [8, 8, 0],
+ "to": [16, 16, 16],
+ "faces": {
+ "north": {"uv": [0, 8, 8, 16], "rotation": 90, "texture": "#1", "cullface": "north"},
+ "east": {"uv": [0, 0, 16, 8], "texture": "#3", "cullface": "east"},
+ "south": {"uv": [8, 8, 16, 16], "rotation": 270, "texture": "#1", "cullface": "south"},
+ "west": {"uv": [16, 8, 0, 0], "rotation": 180, "texture": "#3"},
+ "up": {"uv": [0, 8, 16, 16], "rotation": 270, "texture": "#1", "cullface": "up"}
+ }
+ },
+ {
+ "from": [8, 0, 0],
+ "to": [16, 8, 16],
+ "faces": {
+ "north": {"uv": [0, 8, 8, 16], "texture": "#3", "cullface": "north"},
+ "east": {"uv": [0, 8, 16, 16], "texture": "#3", "cullface": "east"},
+ "south": {"uv": [8, 8, 16, 16], "texture": "#3", "cullface": "south"},
+ "down": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#3", "cullface": "down"}
+ }
+ },
+ {
+ "from": [0, 0, 0],
+ "to": [8, 8, 16],
+ "faces": {
+ "north": {"uv": [8, 8, 16, 16], "texture": "#1", "cullface": "north"},
+ "south": {"uv": [0, 8, 8, 16], "texture": "#1", "cullface": "south"},
+ "west": {"uv": [0, 8, 16, 16], "texture": "#1", "cullface": "west"},
+ "up": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#3"},
+ "down": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#3", "cullface": "down"}
+ }
+ }
+ ],
+ "display": {
+ "thirdperson_lefthand": {
+ "rotation": [75, -135, 0],
+ "translation": [0, 2.5, 0],
+ "scale": [0.375, 0.375, 0.375]
+ },
+ "gui": {
+ "rotation": [30, 135, 0],
+ "scale": [0.625, 0.625, 0.625]
+ },
+ "head": {
+ "rotation": [0, -90, 0]
+ }
+ },
+ "groups": [
+ {
+ "name": "VoxelShapes",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [0, 1, 2]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Lava/bin/main/assets/lava/models/block/frame_stairs_inner.json b/Lava/bin/main/assets/lava/models/block/frame_stairs_inner.json
new file mode 100644
index 00000000..a98d9ebe
--- /dev/null
+++ b/Lava/bin/main/assets/lava/models/block/frame_stairs_inner.json
@@ -0,0 +1,83 @@
+{
+ "credit": "Made with Blockbench",
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "1": "lava:block/frame_block_stair_side",
+ "3": "lava:block/frame_block",
+ "particle": "lava:block/frame_block_stair_side"
+ },
+ "elements": [
+ {
+ "from": [0, 0, 0],
+ "to": [8, 8, 8],
+ "faces": {
+ "north": {"uv": [8, 8, 16, 16], "texture": "#1", "cullface": "north"},
+ "west": {"uv": [0, 8, 8, 16], "texture": "#1", "cullface": "west"},
+ "up": {"uv": [0, 8, 8, 16], "rotation": 90, "texture": "#3"},
+ "down": {"uv": [8, 8, 16, 16], "rotation": 90, "texture": "#3", "cullface": "down"}
+ }
+ },
+ {
+ "from": [0, 0, 8],
+ "to": [8, 8, 16],
+ "faces": {
+ "south": {"uv": [0, 8, 8, 16], "texture": "#3", "cullface": "south"},
+ "west": {"uv": [8, 8, 16, 16], "texture": "#3", "cullface": "west"},
+ "down": {"uv": [0, 8, 8, 16], "rotation": 90, "texture": "#3", "cullface": "down"}
+ }
+ },
+ {
+ "from": [8, 0, 0],
+ "to": [16, 8, 16],
+ "faces": {
+ "north": {"uv": [0, 8, 8, 16], "texture": "#3", "cullface": "north"},
+ "east": {"uv": [0, 8, 16, 16], "texture": "#3", "cullface": "east"},
+ "south": {"uv": [8, 8, 16, 16], "texture": "#3", "cullface": "south"},
+ "down": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#3", "cullface": "down"}
+ }
+ },
+ {
+ "from": [8, 8, 0],
+ "to": [16, 16, 8],
+ "faces": {
+ "north": {"uv": [0, 8, 8, 16], "rotation": 90, "texture": "#1", "cullface": "north"},
+ "east": {"uv": [8, 0, 16, 8], "texture": "#3", "cullface": "east"},
+ "west": {"uv": [8, 8, 0, 0], "rotation": 180, "texture": "#3"},
+ "up": {"uv": [8, 8, 16, 16], "rotation": 270, "texture": "#1", "cullface": "up"}
+ }
+ },
+ {
+ "from": [8, 8, 8],
+ "to": [16, 16, 16],
+ "faces": {
+ "east": {"uv": [0, 0, 8, 8], "texture": "#3", "cullface": "east"},
+ "south": {"uv": [8, 8, 16, 16], "rotation": 270, "texture": "#3", "cullface": "south"},
+ "up": {"uv": [0, 8, 8, 16], "rotation": 270, "texture": "#3", "cullface": "up"}
+ }
+ },
+ {
+ "from": [0, 8, 8],
+ "to": [8, 16, 16],
+ "faces": {
+ "north": {"uv": [0, 0, 8, 8], "rotation": 90, "texture": "#3", "cullface": "north"},
+ "south": {"uv": [8, 0, 16, 8], "rotation": 270, "texture": "#3", "cullface": "south"},
+ "west": {"uv": [16, 8, 8, 0], "rotation": 180, "texture": "#3"},
+ "up": {"uv": [16, 8, 8, 16], "texture": "#1", "cullface": "up"}
+ }
+ }
+ ],
+ "display": {
+ "thirdperson_lefthand": {
+ "rotation": [75, -135, 0],
+ "translation": [0, 2.5, 0],
+ "scale": [0.375, 0.375, 0.375]
+ },
+ "gui": {
+ "rotation": [30, 135, 0],
+ "scale": [0.625, 0.625, 0.625]
+ },
+ "head": {
+ "rotation": [0, -90, 0]
+ }
+ }
+}
\ No newline at end of file
diff --git a/Lava/bin/main/assets/lava/models/block/frame_stairs_outer.json b/Lava/bin/main/assets/lava/models/block/frame_stairs_outer.json
new file mode 100644
index 00000000..32ce33f1
--- /dev/null
+++ b/Lava/bin/main/assets/lava/models/block/frame_stairs_outer.json
@@ -0,0 +1,67 @@
+{
+ "credit": "Made with Blockbench",
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "1": "lava:block/frame_block_stair_side",
+ "2": "lava:block/frame_block_stair_top",
+ "3": "lava:block/frame_block",
+ "particle": "lava:block/frame_block_stair_side"
+ },
+ "elements": [
+ {
+ "from": [0, 0, 0],
+ "to": [8, 8, 16],
+ "faces": {
+ "north": {"uv": [8, 8, 16, 16], "texture": "#1", "cullface": "north"},
+ "south": {"uv": [0, 8, 8, 16], "texture": "#1", "cullface": "south"},
+ "west": {"uv": [0, 8, 16, 16], "texture": "#1", "cullface": "west"},
+ "up": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#3"},
+ "down": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#3", "cullface": "down"}
+ }
+ },
+ {
+ "from": [8, 0, 0],
+ "to": [16, 8, 8],
+ "faces": {
+ "north": {"uv": [0, 8, 8, 16], "texture": "#3", "cullface": "north"},
+ "east": {"uv": [8, 8, 16, 16], "texture": "#3", "cullface": "east"},
+ "down": {"uv": [8, 0, 16, 8], "rotation": 90, "texture": "#3", "cullface": "down"}
+ }
+ },
+ {
+ "from": [8, 8, 0],
+ "to": [16, 16, 8],
+ "faces": {
+ "north": {"uv": [0, 8, 8, 16], "rotation": 90, "texture": "#1", "cullface": "north"},
+ "east": {"uv": [8, 8, 16, 16], "rotation": 270, "texture": "#1", "cullface": "east"},
+ "south": {"uv": [8, 8, 16, 16], "rotation": 270, "texture": "#1", "cullface": "south"},
+ "west": {"uv": [8, 16, 0, 8], "rotation": 270, "texture": "#1"},
+ "up": {"uv": [8, 8, 0, 16], "rotation": 270, "texture": "#2", "cullface": "up"}
+ }
+ },
+ {
+ "from": [8, 0, 8],
+ "to": [16, 8, 16],
+ "faces": {
+ "east": {"uv": [0, 8, 8, 16], "texture": "#1", "cullface": "up"},
+ "south": {"uv": [8, 8, 16, 16], "texture": "#1", "cullface": "south"},
+ "up": {"uv": [16, 8, 8, 0], "rotation": 270, "texture": "#3"},
+ "down": {"uv": [0, 0, 8, 8], "rotation": 90, "texture": "#3", "cullface": "east"}
+ }
+ }
+ ],
+ "display": {
+ "thirdperson_lefthand": {
+ "rotation": [75, -135, 0],
+ "translation": [0, 2.5, 0],
+ "scale": [0.375, 0.375, 0.375]
+ },
+ "gui": {
+ "rotation": [30, 135, 0],
+ "scale": [0.625, 0.625, 0.625]
+ },
+ "head": {
+ "rotation": [0, -90, 0]
+ }
+ }
+}
\ No newline at end of file
diff --git a/Lava/bin/main/assets/lava/models/item/frame_slope.json b/Lava/bin/main/assets/lava/models/item/frame_slope.json
new file mode 100644
index 00000000..b8ebcab5
--- /dev/null
+++ b/Lava/bin/main/assets/lava/models/item/frame_slope.json
@@ -0,0 +1,3 @@
+{
+ "parent": "lava:block/frame_slope"
+}
\ No newline at end of file
diff --git a/Lava/bin/main/assets/lava/models/item/frame_stairs.json b/Lava/bin/main/assets/lava/models/item/frame_stairs.json
new file mode 100644
index 00000000..5fcad228
--- /dev/null
+++ b/Lava/bin/main/assets/lava/models/item/frame_stairs.json
@@ -0,0 +1,3 @@
+{
+ "parent": "lava:block/frame_stairs"
+}
\ No newline at end of file
diff --git a/Lava/bin/main/assets/lava/models/item/slope_block.json b/Lava/bin/main/assets/lava/models/item/slope_block.json
deleted file mode 100644
index ddef292b..00000000
--- a/Lava/bin/main/assets/lava/models/item/slope_block.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "lava:block/slope_block"
-}
\ No newline at end of file
diff --git a/Lava/bin/main/assets/lava/textures/block/frame_block.png b/Lava/bin/main/assets/lava/textures/block/frame_block.png
index 78e57df3..6a57f977 100644
Binary files a/Lava/bin/main/assets/lava/textures/block/frame_block.png and b/Lava/bin/main/assets/lava/textures/block/frame_block.png differ
diff --git a/Lava/bin/main/assets/lava/textures/block/frame_block_stair_side.png b/Lava/bin/main/assets/lava/textures/block/frame_block_stair_side.png
new file mode 100644
index 00000000..5dc1772a
Binary files /dev/null and b/Lava/bin/main/assets/lava/textures/block/frame_block_stair_side.png differ
diff --git a/Lava/bin/main/assets/lava/textures/block/frame_block_stair_top.png b/Lava/bin/main/assets/lava/textures/block/frame_block_stair_top.png
new file mode 100644
index 00000000..75987967
Binary files /dev/null and b/Lava/bin/main/assets/lava/textures/block/frame_block_stair_top.png differ
diff --git a/Lava/bin/main/assets/lava/textures/block/frame_slope_front.png b/Lava/bin/main/assets/lava/textures/block/frame_slope_front.png
new file mode 100644
index 00000000..c0b99d6b
Binary files /dev/null and b/Lava/bin/main/assets/lava/textures/block/frame_slope_front.png differ
diff --git a/Lava/bin/main/assets/lava/textures/block/frame_slope_side.png b/Lava/bin/main/assets/lava/textures/block/frame_slope_side.png
new file mode 100644
index 00000000..803da17d
Binary files /dev/null and b/Lava/bin/main/assets/lava/textures/block/frame_slope_side.png differ
diff --git a/Lava/src/generated/resources/data/lava/loot_tables/blocks/slope_block.json b/Lava/bin/main/data/lava/loot_tables/blocks/frame_slope.json
similarity index 74%
rename from Lava/src/generated/resources/data/lava/loot_tables/blocks/slope_block.json
rename to Lava/bin/main/data/lava/loot_tables/blocks/frame_slope.json
index 6563d643..756c591f 100644
--- a/Lava/src/generated/resources/data/lava/loot_tables/blocks/slope_block.json
+++ b/Lava/bin/main/data/lava/loot_tables/blocks/frame_slope.json
@@ -2,13 +2,13 @@
"type": "minecraft:block",
"pools": [
{
- "name": "slope_block",
+ "name": "frame_slope",
"rolls": 1.0,
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:item",
- "name": "lava:slope_block"
+ "name": "lava:frame_slope"
}
]
}
diff --git a/Lava/bin/main/data/minecraft/tags/blocks/mineable/axe.json b/Lava/bin/main/data/minecraft/tags/blocks/mineable/axe.json
index e2500e6a..8e47788c 100644
--- a/Lava/bin/main/data/minecraft/tags/blocks/mineable/axe.json
+++ b/Lava/bin/main/data/minecraft/tags/blocks/mineable/axe.json
@@ -2,6 +2,6 @@
"replace": false,
"values": [
"lava:frame_block",
- "lava:slope_block"
+ "lava:frame_slope"
]
}
\ No newline at end of file
diff --git a/Lava/bin/main/data/minecraft/tags/blocks/needs_stone_tool.json b/Lava/bin/main/data/minecraft/tags/blocks/needs_stone_tool.json
index c30eee9f..2e65b601 100644
--- a/Lava/bin/main/data/minecraft/tags/blocks/needs_stone_tool.json
+++ b/Lava/bin/main/data/minecraft/tags/blocks/needs_stone_tool.json
@@ -1,7 +1,6 @@
{
"replace": false,
"values": [
- "lava:slope_block",
- "lava:frame_block"
+ "lava:frame_slope"
]
}
\ No newline at end of file
diff --git a/Lava/bin/main/se/datasektionen/lava/LavaMod.class b/Lava/bin/main/se/datasektionen/lava/LavaMod.class
index 0019f9e1..0693b876 100644
Binary files a/Lava/bin/main/se/datasektionen/lava/LavaMod.class and b/Lava/bin/main/se/datasektionen/lava/LavaMod.class differ
diff --git a/Lava/bin/main/se/datasektionen/lava/blocks/FrameBlock.class b/Lava/bin/main/se/datasektionen/lava/blocks/FrameBlock.class
new file mode 100644
index 00000000..be6502cb
Binary files /dev/null and b/Lava/bin/main/se/datasektionen/lava/blocks/FrameBlock.class differ
diff --git a/Lava/bin/main/se/datasektionen/lava/blocks/FrameSlope.class b/Lava/bin/main/se/datasektionen/lava/blocks/FrameSlope.class
new file mode 100644
index 00000000..a407afea
Binary files /dev/null and b/Lava/bin/main/se/datasektionen/lava/blocks/FrameSlope.class differ
diff --git a/Lava/bin/main/se/datasektionen/lava/blocks/FrameStairs.class b/Lava/bin/main/se/datasektionen/lava/blocks/FrameStairs.class
new file mode 100644
index 00000000..b69c703a
Binary files /dev/null and b/Lava/bin/main/se/datasektionen/lava/blocks/FrameStairs.class differ
diff --git a/Lava/bin/main/se/datasektionen/lava/blocks/utils/ModelProperty.class b/Lava/bin/main/se/datasektionen/lava/blocks/utils/ModelProperty.class
new file mode 100644
index 00000000..0fe8145d
Binary files /dev/null and b/Lava/bin/main/se/datasektionen/lava/blocks/utils/ModelProperty.class differ
diff --git a/Lava/bin/main/se/datasektionen/lava/datagen/BlockStates.class b/Lava/bin/main/se/datasektionen/lava/datagen/BlockStates.class
index 3845a427..0a87f367 100644
Binary files a/Lava/bin/main/se/datasektionen/lava/datagen/BlockStates.class and b/Lava/bin/main/se/datasektionen/lava/datagen/BlockStates.class differ
diff --git a/Lava/bin/main/se/datasektionen/lava/datagen/ItemModels.class b/Lava/bin/main/se/datasektionen/lava/datagen/ItemModels.class
index bb22e45c..679dbadf 100644
Binary files a/Lava/bin/main/se/datasektionen/lava/datagen/ItemModels.class and b/Lava/bin/main/se/datasektionen/lava/datagen/ItemModels.class differ
diff --git a/Lava/bin/main/se/datasektionen/lava/datagen/LavaBlockTags.class b/Lava/bin/main/se/datasektionen/lava/datagen/LavaBlockTags.class
index 28448e08..9e24b2cf 100644
Binary files a/Lava/bin/main/se/datasektionen/lava/datagen/LavaBlockTags.class and b/Lava/bin/main/se/datasektionen/lava/datagen/LavaBlockTags.class differ
diff --git a/Lava/bin/main/se/datasektionen/lava/datagen/LavaLanguageProvider.class b/Lava/bin/main/se/datasektionen/lava/datagen/LavaLanguageProvider.class
index d5dd6085..e36e8a03 100644
Binary files a/Lava/bin/main/se/datasektionen/lava/datagen/LavaLanguageProvider.class and b/Lava/bin/main/se/datasektionen/lava/datagen/LavaLanguageProvider.class differ
diff --git a/Lava/bin/main/se/datasektionen/lava/datagen/LootTables.class b/Lava/bin/main/se/datasektionen/lava/datagen/LootTables.class
index c9a0a134..bc96ece0 100644
Binary files a/Lava/bin/main/se/datasektionen/lava/datagen/LootTables.class and b/Lava/bin/main/se/datasektionen/lava/datagen/LootTables.class differ
diff --git a/Lava/bin/main/se/datasektionen/lava/datagen/Recipes.class b/Lava/bin/main/se/datasektionen/lava/datagen/Recipes.class
index bcc00770..ababc35b 100644
Binary files a/Lava/bin/main/se/datasektionen/lava/datagen/Recipes.class and b/Lava/bin/main/se/datasektionen/lava/datagen/Recipes.class differ
diff --git a/Lava/bin/main/se/datasektionen/lava/setup/ClientSetup.class b/Lava/bin/main/se/datasektionen/lava/setup/ClientSetup.class
index 1fafb500..498a618b 100644
Binary files a/Lava/bin/main/se/datasektionen/lava/setup/ClientSetup.class and b/Lava/bin/main/se/datasektionen/lava/setup/ClientSetup.class differ
diff --git a/Lava/bin/main/se/datasektionen/lava/setup/Registration.class b/Lava/bin/main/se/datasektionen/lava/setup/Registration.class
index 7683a2be..1469f424 100644
Binary files a/Lava/bin/main/se/datasektionen/lava/setup/Registration.class and b/Lava/bin/main/se/datasektionen/lava/setup/Registration.class differ
diff --git a/Lava/run/screenshots/2022-05-19_11.13.49.png b/Lava/run/screenshots/2022-05-19_11.13.49.png
new file mode 100644
index 00000000..cf65b4e0
Binary files /dev/null and b/Lava/run/screenshots/2022-05-19_11.13.49.png differ
diff --git a/Lava/run/screenshots/2022-05-19_11.13.49_2.png b/Lava/run/screenshots/2022-05-19_11.13.49_2.png
new file mode 100644
index 00000000..74d6b93e
Binary files /dev/null and b/Lava/run/screenshots/2022-05-19_11.13.49_2.png differ
diff --git a/Lava/run/usercache.json b/Lava/run/usercache.json
index fc0ec820..afe2cf8f 100644
--- a/Lava/run/usercache.json
+++ b/Lava/run/usercache.json
@@ -1 +1 @@
-[{"name":"Dev","uuid":"380df991-f603-344c-a090-369bad2a924a","expiresOn":"2022-05-28 16:57:58 +0200"}]
\ No newline at end of file
+[{"name":"Dev","uuid":"380df991-f603-344c-a090-369bad2a924a","expiresOn":"2022-06-19 21:33:17 +0200"}]
\ No newline at end of file
diff --git a/Lava/src/generated/resources/.cache/cache b/Lava/src/generated/resources/.cache/cache
index 49aeccf9..6ba1068d 100644
--- a/Lava/src/generated/resources/.cache/cache
+++ b/Lava/src/generated/resources/.cache/cache
@@ -1,19 +1,19 @@
90595d326540bf223462a02b4bcaa81a3bd194b1 assets/lava/blockstates/frame_block.json
+ced7584cec36346b81260c3cc2418d27ffa4dfc8 assets/lava/blockstates/frame_slope.json
494e23d0a9aed63796aaa9f378cc809a4be27e53 assets/lava/blockstates/obsidian_inscriptions.json
-de36b5b81a2245be2d9391f4ae0e25c4178763fa assets/lava/blockstates/slope_block.json
-5aa65a428b33ae4e05334260a9f65c9145391790 assets/lava/lang/en_us.json
+5e1e0f17f506c3813014026d479039f9228cfddc assets/lava/lang/en_us.json
4b88186f152d08a3e44043b66a67720c3432612d assets/lava/models/block/frame_block.json
+cbc1219031a11c8d06d4129e5b9aedd908f37459 assets/lava/models/block/frame_slope.json
09ea66eb20504f43933dce0385782a3718b1918e assets/lava/models/block/obsidian_inscriptions.json
-b108610a0b46e0eeeed39458e7cc30990c4eca19 assets/lava/models/block/slope_block.json
3850f55f19aee5529a61494d3077a2bf10bf463f assets/lava/models/item/frame_block.json
+f4ad69a85828d58345b3d209a368c32511caa4c5 assets/lava/models/item/frame_slope.json
1a3c6cdc93ee5c2661bc74a9a33af4d600f1a9ee assets/lava/models/item/obsidian_inscriptions.json
-c0151ceb74228da4157c2c5ba63259e38e807fef assets/lava/models/item/slope_block.json
17858ececa5137634dba4e06fc832a58be42ceb7 data/lava/advancements/recipes/lavamod/frame_block.json
c15c5fb2dc713da047191928998c4fd0389682b8 data/lava/loot_tables/blocks/frame_block.json
-306f4ae3f2dc438a8a2765768ec165c2a9840c73 data/lava/loot_tables/blocks/slope_block.json
+108b1f07bf7d003ca97806c923505bd5a9c585ab data/lava/loot_tables/blocks/frame_slope.json
6c55dd61b4aa29f5acbf8a9b06ceb25ae0b72f54 data/lava/recipes/frame_block.json
f1c19212f7fdbd50678b53e9bf602197e68a64bd data/minecraft/tags/blocks/dragon_immune.json
-5c4fa0ac8501475f752ee89b30ea0e177f7be439 data/minecraft/tags/blocks/mineable/axe.json
+cae65ed3db29d1635aa6c38441ea714650162c64 data/minecraft/tags/blocks/mineable/axe.json
f1c19212f7fdbd50678b53e9bf602197e68a64bd data/minecraft/tags/blocks/mineable/pickaxe.json
f1c19212f7fdbd50678b53e9bf602197e68a64bd data/minecraft/tags/blocks/needs_diamond_tool.json
-362e67a7e0c65f9794952f6f0fc58a7cc06f0092 data/minecraft/tags/blocks/needs_stone_tool.json
+6b03b0dfdf07bd4de67776d9cfc1f2a76a2353a3 data/minecraft/tags/blocks/needs_stone_tool.json
diff --git a/Lava/src/generated/resources/assets/lava/blockstates/slope_block.json b/Lava/src/generated/resources/assets/lava/blockstates/frame_slope.json
similarity index 52%
rename from Lava/src/generated/resources/assets/lava/blockstates/slope_block.json
rename to Lava/src/generated/resources/assets/lava/blockstates/frame_slope.json
index e7fe1458..9ebf0ed0 100644
--- a/Lava/src/generated/resources/assets/lava/blockstates/slope_block.json
+++ b/Lava/src/generated/resources/assets/lava/blockstates/frame_slope.json
@@ -1,18 +1,18 @@
{
"variants": {
"facing=north": {
- "model": "lava:block/slope_block"
+ "model": "lava:block/frame_slope"
},
"facing=south": {
- "model": "lava:block/slope_block",
+ "model": "lava:block/frame_slope",
"y": 180
},
"facing=west": {
- "model": "lava:block/slope_block",
+ "model": "lava:block/frame_slope",
"y": 270
},
"facing=east": {
- "model": "lava:block/slope_block",
+ "model": "lava:block/frame_slope",
"y": 90
}
}
diff --git a/Lava/src/generated/resources/assets/lava/lang/en_us.json b/Lava/src/generated/resources/assets/lava/lang/en_us.json
index 540ad3fd..a85d5963 100644
--- a/Lava/src/generated/resources/assets/lava/lang/en_us.json
+++ b/Lava/src/generated/resources/assets/lava/lang/en_us.json
@@ -1,6 +1,8 @@
{
"block.lava.frame_block": "Frame Block",
+ "block.lava.frame_slab": "Frame Slab Block",
+ "block.lava.frame_slope": "Frame Slope Block",
+ "block.lava.frame_stairs": "Frame Stair Block",
"block.lava.obsidian_inscriptions": "Obsidian Inscriptions",
- "block.lava.slope_block": "Slope Block",
"itemGroup.lavamod": "Lava"
}
\ No newline at end of file
diff --git a/Lava/src/generated/resources/assets/lava/models/block/slope_block.json b/Lava/src/generated/resources/assets/lava/models/block/frame_slope.json
similarity index 71%
rename from Lava/src/generated/resources/assets/lava/models/block/slope_block.json
rename to Lava/src/generated/resources/assets/lava/models/block/frame_slope.json
index 2f1865f7..9c63d389 100644
--- a/Lava/src/generated/resources/assets/lava/models/block/slope_block.json
+++ b/Lava/src/generated/resources/assets/lava/models/block/frame_slope.json
@@ -1,7 +1,7 @@
{
"parent": "minecraft:block/orientable_vertical",
"textures": {
- "side": "lava:block/frame_slope_slide",
+ "side": "lava:block/frame_slope_side",
"front": "lava:block/frame_block"
}
}
\ No newline at end of file
diff --git a/Lava/src/generated/resources/assets/lava/models/item/frame_slope.json b/Lava/src/generated/resources/assets/lava/models/item/frame_slope.json
new file mode 100644
index 00000000..b8ebcab5
--- /dev/null
+++ b/Lava/src/generated/resources/assets/lava/models/item/frame_slope.json
@@ -0,0 +1,3 @@
+{
+ "parent": "lava:block/frame_slope"
+}
\ No newline at end of file
diff --git a/Lava/src/generated/resources/assets/lava/models/item/slope_block.json b/Lava/src/generated/resources/assets/lava/models/item/slope_block.json
deleted file mode 100644
index ddef292b..00000000
--- a/Lava/src/generated/resources/assets/lava/models/item/slope_block.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "parent": "lava:block/slope_block"
-}
\ No newline at end of file
diff --git a/Lava/bin/main/data/lava/loot_tables/blocks/slope_block.json b/Lava/src/generated/resources/data/lava/loot_tables/blocks/frame_slope.json
similarity index 74%
rename from Lava/bin/main/data/lava/loot_tables/blocks/slope_block.json
rename to Lava/src/generated/resources/data/lava/loot_tables/blocks/frame_slope.json
index 6563d643..756c591f 100644
--- a/Lava/bin/main/data/lava/loot_tables/blocks/slope_block.json
+++ b/Lava/src/generated/resources/data/lava/loot_tables/blocks/frame_slope.json
@@ -2,13 +2,13 @@
"type": "minecraft:block",
"pools": [
{
- "name": "slope_block",
+ "name": "frame_slope",
"rolls": 1.0,
"bonus_rolls": 0.0,
"entries": [
{
"type": "minecraft:item",
- "name": "lava:slope_block"
+ "name": "lava:frame_slope"
}
]
}
diff --git a/Lava/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json b/Lava/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json
index e2500e6a..8e47788c 100644
--- a/Lava/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json
+++ b/Lava/src/generated/resources/data/minecraft/tags/blocks/mineable/axe.json
@@ -2,6 +2,6 @@
"replace": false,
"values": [
"lava:frame_block",
- "lava:slope_block"
+ "lava:frame_slope"
]
}
\ No newline at end of file
diff --git a/Lava/src/generated/resources/data/minecraft/tags/blocks/needs_stone_tool.json b/Lava/src/generated/resources/data/minecraft/tags/blocks/needs_stone_tool.json
index c30eee9f..2e65b601 100644
--- a/Lava/src/generated/resources/data/minecraft/tags/blocks/needs_stone_tool.json
+++ b/Lava/src/generated/resources/data/minecraft/tags/blocks/needs_stone_tool.json
@@ -1,7 +1,6 @@
{
"replace": false,
"values": [
- "lava:slope_block",
- "lava:frame_block"
+ "lava:frame_slope"
]
}
\ No newline at end of file
diff --git a/Lava/src/main/java/se/datasektionen/lava/LavaMod.java b/Lava/src/main/java/se/datasektionen/lava/LavaMod.java
index 14fd515e..0cd1965c 100644
--- a/Lava/src/main/java/se/datasektionen/lava/LavaMod.java
+++ b/Lava/src/main/java/se/datasektionen/lava/LavaMod.java
@@ -1,5 +1,7 @@
package se.datasektionen.lava;
+import net.minecraft.client.renderer.ItemBlockRenderTypes;
+import net.minecraft.client.renderer.RenderType;
import net.minecraft.core.Direction;
import net.minecraft.world.phys.shapes.Shapes;
import net.minecraft.world.phys.shapes.VoxelShape;
@@ -7,6 +9,7 @@
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.fml.common.Mod;
+import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -30,21 +33,27 @@ public LavaMod() {
modbus.addListener(ModSetup::init);
// Register 'ClientSetup::init' to be called at mod setup time (client only)
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> () -> modbus.addListener(ClientSetup::init));
+
+ modbus.addListener(this::clientSetup);
}
-
- public static VoxelShape calculateShapes(Direction to, VoxelShape shape) {
- VoxelShape[] buffer = new VoxelShape[] {shape, Shapes.empty() };
- int times = (to.get2DDataValue() - Direction.NORTH.get2DDataValue() + 4) % 4;
-
- for (int i = 0; i < times; i++) {
- buffer[0].forAllBoxes((minX, minY, minZ, maxX, maxY, maxZ) -> buffer[1] = Shapes.or(buffer[1],
- Shapes.create(1 - maxZ, minY, minX, 1 - minZ, maxY, maxX)));
- buffer[0] = buffer[1];
- buffer[1] = Shapes.empty();
- }
-
-
- return buffer[0];
- }
+ public static VoxelShape calculateShapes(Direction to, VoxelShape shape) {
+ VoxelShape[] buffer = new VoxelShape[] { shape, Shapes.empty() };
+ int times = (to.get2DDataValue() - Direction.NORTH.get2DDataValue() + 4) % 4;
+
+ for (int i = 0; i < times; i++) {
+ buffer[0].forAllBoxes((minX, minY, minZ, maxX, maxY, maxZ) -> buffer[1] = Shapes.or(buffer[1],
+ Shapes.create(1 - maxZ, minY, minX, 1 - minZ, maxY, maxX)));
+ buffer[0] = buffer[1];
+ buffer[1] = Shapes.empty();
+ }
+
+ return buffer[0];
+ }
+
+ private void clientSetup(final FMLClientSetupEvent event) {
+
+ ItemBlockRenderTypes.setRenderLayer(Registration.FRAME_STAIRS.get(), RenderType.translucent());
+ ItemBlockRenderTypes.setRenderLayer(Registration.FRAME_SLAB.get(), RenderType.translucent());
+ }
}
diff --git a/Lava/src/main/java/se/datasektionen/lava/blocks/FrameBlock.java b/Lava/src/main/java/se/datasektionen/lava/blocks/FrameBlock.java
index 43eda61d..1a20afd6 100644
--- a/Lava/src/main/java/se/datasektionen/lava/blocks/FrameBlock.java
+++ b/Lava/src/main/java/se/datasektionen/lava/blocks/FrameBlock.java
@@ -35,7 +35,7 @@ public FrameBlock() {
@Override
public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand,
- BlockHitResult result) {
+ BlockHitResult result) {
ItemStack held = player.getItemInHand(hand);
Item heldItem = held.getItem();
if (!level.isClientSide && heldItem == Items.AIR) {
@@ -97,7 +97,6 @@ public static void setupFrame() {
for (int i = 0; i < tempVal.length; i++) {
eligibleBlocks.add(i, tempVal[i].toString());
}
-
}
@Override
diff --git a/Lava/src/main/java/se/datasektionen/lava/blocks/FrameSlab.java b/Lava/src/main/java/se/datasektionen/lava/blocks/FrameSlab.java
new file mode 100644
index 00000000..28b8dbee
--- /dev/null
+++ b/Lava/src/main/java/se/datasektionen/lava/blocks/FrameSlab.java
@@ -0,0 +1,134 @@
+package se.datasektionen.lava.blocks;
+
+import java.util.ArrayList;
+import java.util.stream.IntStream;
+
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.world.InteractionHand;
+import net.minecraft.world.InteractionResult;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.Items;
+import net.minecraft.world.item.context.BlockPlaceContext;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.HorizontalDirectionalBlock;
+import net.minecraft.world.level.block.SimpleWaterloggedBlock;
+import net.minecraft.world.level.block.state.BlockBehaviour;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.StateDefinition;
+import net.minecraft.world.level.block.state.properties.BlockStateProperties;
+import net.minecraft.world.level.block.state.properties.BooleanProperty;
+import net.minecraft.world.level.block.state.properties.DirectionProperty;
+import net.minecraft.world.level.block.state.properties.EnumProperty;
+import net.minecraft.world.level.block.state.properties.Half;
+import net.minecraft.world.level.block.state.properties.StairsShape;
+import net.minecraft.world.level.material.FluidState;
+import net.minecraft.world.level.material.Fluids;
+import net.minecraft.world.phys.BlockHitResult;
+import net.minecraft.world.phys.shapes.CollisionContext;
+import net.minecraft.world.phys.shapes.Shapes;
+import net.minecraft.world.phys.shapes.VoxelShape;
+import net.minecraftforge.registries.ForgeRegistries;
+import se.datasektionen.lava.LavaMod;
+import se.datasektionen.lava.blocks.utils.ModelProperty;
+import se.datasektionen.lava.setup.Registration;
+import javax.annotation.Nullable;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
+import net.minecraft.tags.FluidTags;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.context.BlockPlaceContext;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.level.LevelAccessor;
+import net.minecraft.world.level.block.state.BlockBehaviour;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.StateDefinition;
+import net.minecraft.world.level.block.state.properties.BlockStateProperties;
+import net.minecraft.world.level.block.state.properties.BooleanProperty;
+import net.minecraft.world.level.block.state.properties.EnumProperty;
+import net.minecraft.world.level.block.state.properties.SlabType;
+import net.minecraft.world.level.material.Fluid;
+import net.minecraft.world.level.material.FluidState;
+import net.minecraft.world.level.material.Fluids;
+import net.minecraft.world.level.pathfinder.PathComputationType;
+import net.minecraft.world.phys.shapes.CollisionContext;
+import net.minecraft.world.phys.shapes.Shapes;
+import net.minecraft.world.phys.shapes.VoxelShape;
+
+public class FrameSlab extends Block implements SimpleWaterloggedBlock {
+ public static final EnumProperty TYPE = BlockStateProperties.SLAB_TYPE;
+ public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED;
+ protected static final VoxelShape BOTTOM_AABB = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 8.0D, 16.0D);
+ protected static final VoxelShape TOP_AABB = Block.box(0.0D, 8.0D, 0.0D, 16.0D, 16.0D, 16.0D);
+
+ public FrameSlab() {
+ super(BlockBehaviour.Properties.copy(Registration.FRAME_BLOCK.get()));
+ this.registerDefaultState(
+ this.stateDefinition.any()
+ .setValue(WATERLOGGED, Boolean.valueOf(false))
+ .setValue(TYPE, SlabType.BOTTOM));
+ }
+
+ @Override
+ public BlockState getStateForPlacement(BlockPlaceContext context) {
+ BlockPos blockpos = context.getClickedPos();
+ BlockState blockstate = context.getLevel().getBlockState(blockpos);
+ if (blockstate.is(this)) {
+ return blockstate.setValue(TYPE, SlabType.DOUBLE).setValue(WATERLOGGED, Boolean.valueOf(false));
+ } else {
+ FluidState fluidstate = context.getLevel().getFluidState(blockpos);
+ BlockState blockstate1 = this.defaultBlockState().setValue(TYPE, SlabType.BOTTOM).setValue(WATERLOGGED, Boolean.valueOf(fluidstate.getType() == Fluids.WATER));
+ Direction direction = context.getClickedFace();
+ return direction != Direction.DOWN && (direction == Direction.UP || !(context.getClickLocation().y - (double) blockpos.getY() > 0.5D)) ? blockstate1 : blockstate1.setValue(TYPE, SlabType.TOP);
+ }
+ }
+
+ @Override
+ protected void createBlockStateDefinition(StateDefinition.Builder builder) {
+ super.createBlockStateDefinition(builder);
+ builder
+ .add(TYPE)
+ .add(WATERLOGGED);
+ }
+
+ public FluidState getFluidState(BlockState blockState) {
+ return blockState.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(blockState);
+ }
+
+ public VoxelShape getShape(BlockState p_56390_, BlockGetter p_56391_, BlockPos p_56392_, CollisionContext p_56393_) {
+ SlabType slabtype = p_56390_.getValue(TYPE);
+ switch (slabtype) {
+ case DOUBLE:
+ return Shapes.block();
+ case TOP:
+ return TOP_AABB;
+ default:
+ return BOTTOM_AABB;
+ }
+ }
+
+ public boolean canBeReplaced(BlockState blockState, BlockPlaceContext blockPlaceContext) {
+ ItemStack itemstack = blockPlaceContext.getItemInHand();
+ SlabType slabtype = blockState.getValue(TYPE);
+ if (slabtype != SlabType.DOUBLE && itemstack.is(this.asItem())) {
+ if (blockPlaceContext.replacingClickedOnBlock()) {
+ boolean flag = blockPlaceContext.getClickLocation().y - (double) blockPlaceContext.getClickedPos().getY() > 0.5D;
+ Direction direction = blockPlaceContext.getClickedFace();
+ if (slabtype == SlabType.BOTTOM) {
+ return direction == Direction.UP || flag && direction.getAxis().isHorizontal();
+ } else {
+ return direction == Direction.DOWN || !flag && direction.getAxis().isHorizontal();
+ }
+ } else {
+ return true;
+ }
+ } else {
+ return false;
+ }
+ }
+}
diff --git a/Lava/src/main/java/se/datasektionen/lava/blocks/FrameSlope.java b/Lava/src/main/java/se/datasektionen/lava/blocks/FrameSlope.java
new file mode 100644
index 00000000..86d260b6
--- /dev/null
+++ b/Lava/src/main/java/se/datasektionen/lava/blocks/FrameSlope.java
@@ -0,0 +1,127 @@
+package se.datasektionen.lava.blocks;
+
+import java.util.EnumMap;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+import java.util.stream.Stream;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
+import net.minecraft.world.InteractionHand;
+import net.minecraft.world.InteractionResult;
+import net.minecraft.world.entity.EntityType;
+import net.minecraft.world.entity.animal.Pig;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.context.BlockPlaceContext;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.HorizontalDirectionalBlock;
+import net.minecraft.world.level.block.StairBlock;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.StateDefinition;
+import net.minecraft.world.level.material.Material;
+import net.minecraft.world.phys.BlockHitResult;
+import net.minecraft.world.phys.shapes.BooleanOp;
+import net.minecraft.world.phys.shapes.CollisionContext;
+import net.minecraft.world.phys.shapes.Shapes;
+import net.minecraft.world.phys.shapes.VoxelShape;
+import net.minecraftforge.items.CapabilityItemHandler;
+import net.minecraft.world.level.block.state.properties.BlockStateProperties;
+import net.minecraft.world.level.block.state.properties.BooleanProperty;
+import net.minecraft.world.level.block.state.properties.DirectionProperty;
+import net.minecraft.world.level.block.state.properties.EnumProperty;
+import net.minecraft.world.level.block.state.properties.Half;
+import net.minecraft.world.level.block.state.properties.StairsShape;
+import net.minecraftforge.items.IItemHandler;
+import net.minecraftforge.items.ItemStackHandler;
+import se.datasektionen.lava.LavaMod;
+import java.util.Random;
+import java.util.stream.IntStream;
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
+import net.minecraft.server.level.ServerLevel;
+import net.minecraft.world.InteractionHand;
+import net.minecraft.world.InteractionResult;
+import net.minecraft.world.entity.Entity;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.item.context.BlockPlaceContext;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.level.Explosion;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.LevelAccessor;
+import net.minecraft.world.level.block.state.BlockBehaviour;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.StateDefinition;
+import net.minecraft.world.level.block.state.properties.BlockStateProperties;
+import net.minecraft.world.level.block.state.properties.BooleanProperty;
+import net.minecraft.world.level.block.state.properties.DirectionProperty;
+import net.minecraft.world.level.block.state.properties.EnumProperty;
+import net.minecraft.world.level.block.state.properties.Half;
+import net.minecraft.world.level.block.state.properties.StairsShape;
+import net.minecraft.world.level.material.FluidState;
+import net.minecraft.world.level.material.Fluids;
+import net.minecraft.world.level.pathfinder.PathComputationType;
+import net.minecraft.world.phys.BlockHitResult;
+import net.minecraft.world.phys.shapes.CollisionContext;
+import net.minecraft.world.phys.shapes.Shapes;
+import net.minecraft.world.phys.shapes.VoxelShape;
+import se.datasektionen.lava.setup.Registration;
+
+public class FrameSlope extends HorizontalDirectionalBlock {
+
+ private static final Map SHAPES = new EnumMap<>(Direction.class);
+
+ public FrameSlope() {
+ super(Properties.of(Material.WOOD).noOcclusion().strength(2.0f).requiresCorrectToolForDrops());
+ registerDefaultState(this.defaultBlockState()
+ .setValue(FACING, Direction.NORTH));
+ // .setValue(HALF, Half.BOTTOM);
+ runCalculation(SHAPE.orElse(Shapes.block()));
+ }
+
+ // The voxelshape of the slope
+ private static final Optional SHAPE = Stream.of(
+ Block.box(0, 0, 0, 16, 22.63, 0),
+ Block.box(0, 0, 16, 16, 16, 16),
+ Block.box(0, 0.01, 0, 16, 0.01, 16),
+ Block.box(0, 0, 0, 0, 16, 16),
+ Block.box(16, 0, 0, 16, 16, 16)
+ // Block.box(0, 12, 13, 16, 16, 16)
+ // Block.box(0, 0, 0, 16, 23, 0),
+ // Block.box(0, 0, 16, 16, 16, 16)
+ ).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR));
+
+ @Override
+ public VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) {
+ return SHAPES.get(state.getValue(FACING));
+ }
+
+ /**
+ * A function that makes the block always face the player when placed
+ */
+ protected void createBlockStateDefinition(StateDefinition.Builder builder) {
+ super.createBlockStateDefinition(builder);
+ builder.add(FACING);
+ }
+
+ /**
+ * For each direction there is in the world, calculate how the voxels (kinda
+ * hitboxes) should be set up
+ * (which is done through the LavaMod.calculateShapes() function)
+ *
+ * @param shape, the shape the calculations should be done for
+ */
+ protected void runCalculation(VoxelShape shape) {
+ for (Direction direction : Direction.values())
+ SHAPES.put(direction, LavaMod.calculateShapes(direction, shape));
+ }
+
+ @Override
+ public BlockState getStateForPlacement(BlockPlaceContext context) {
+ return defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite());
+ }
+
+}
diff --git a/Lava/src/main/java/se/datasektionen/lava/blocks/FrameStairs.java b/Lava/src/main/java/se/datasektionen/lava/blocks/FrameStairs.java
new file mode 100644
index 00000000..0c345254
--- /dev/null
+++ b/Lava/src/main/java/se/datasektionen/lava/blocks/FrameStairs.java
@@ -0,0 +1,193 @@
+package se.datasektionen.lava.blocks;
+
+import java.util.ArrayList;
+import java.util.stream.IntStream;
+
+import net.minecraft.core.BlockPos;
+import net.minecraft.core.Direction;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.world.InteractionHand;
+import net.minecraft.world.InteractionResult;
+import net.minecraft.world.entity.player.Player;
+import net.minecraft.world.item.Item;
+import net.minecraft.world.item.ItemStack;
+import net.minecraft.world.item.Items;
+import net.minecraft.world.item.context.BlockPlaceContext;
+import net.minecraft.world.level.BlockGetter;
+import net.minecraft.world.level.Level;
+import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.HorizontalDirectionalBlock;
+import net.minecraft.world.level.block.SimpleWaterloggedBlock;
+import net.minecraft.world.level.block.state.BlockBehaviour;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.StateDefinition;
+import net.minecraft.world.level.block.state.properties.BlockStateProperties;
+import net.minecraft.world.level.block.state.properties.BooleanProperty;
+import net.minecraft.world.level.block.state.properties.DirectionProperty;
+import net.minecraft.world.level.block.state.properties.EnumProperty;
+import net.minecraft.world.level.block.state.properties.Half;
+import net.minecraft.world.level.block.state.properties.StairsShape;
+import net.minecraft.world.level.material.FluidState;
+import net.minecraft.world.level.material.Fluids;
+import net.minecraft.world.phys.BlockHitResult;
+import net.minecraft.world.phys.shapes.CollisionContext;
+import net.minecraft.world.phys.shapes.Shapes;
+import net.minecraft.world.phys.shapes.VoxelShape;
+import net.minecraftforge.registries.ForgeRegistries;
+import se.datasektionen.lava.LavaMod;
+import se.datasektionen.lava.blocks.utils.ModelProperty;
+import se.datasektionen.lava.setup.Registration;
+
+public class FrameStairs extends Block implements SimpleWaterloggedBlock {
+ public static final DirectionProperty FACING = HorizontalDirectionalBlock.FACING;
+ public static final EnumProperty HALF = BlockStateProperties.HALF;
+ public static final EnumProperty SHAPE = BlockStateProperties.STAIRS_SHAPE;
+ public static final BooleanProperty WATERLOGGED = BlockStateProperties.WATERLOGGED;
+ public static final EnumProperty TEXTURE = EnumProperty.create("model", ModelProperty.class);
+ public static ArrayList eligibleBlocks = null;
+ protected static final VoxelShape TOP_AABB = Block.box(0.0D, 8.0D, 0.0D, 16.0D, 16.0D, 16.0D);
+ protected static final VoxelShape BOTTOM_AABB = Block.box(0.0D, 0.0D, 0.0D, 16.0D, 8.0D, 16.0D);
+ protected static final VoxelShape OCTET_NNN = Block.box(0.0D, 0.0D, 0.0D, 8.0D, 8.0D, 8.0D);
+ protected static final VoxelShape OCTET_NNP = Block.box(0.0D, 0.0D, 8.0D, 8.0D, 8.0D, 16.0D);
+ protected static final VoxelShape OCTET_NPN = Block.box(0.0D, 8.0D, 0.0D, 8.0D, 16.0D, 8.0D);
+ protected static final VoxelShape OCTET_NPP = Block.box(0.0D, 8.0D, 8.0D, 8.0D, 16.0D, 16.0D);
+ protected static final VoxelShape OCTET_PNN = Block.box(8.0D, 0.0D, 0.0D, 16.0D, 8.0D, 8.0D);
+ protected static final VoxelShape OCTET_PNP = Block.box(8.0D, 0.0D, 8.0D, 16.0D, 8.0D, 16.0D);
+ protected static final VoxelShape OCTET_PPN = Block.box(8.0D, 8.0D, 0.0D, 16.0D, 16.0D, 8.0D);
+ protected static final VoxelShape OCTET_PPP = Block.box(8.0D, 8.0D, 8.0D, 16.0D, 16.0D, 16.0D);
+ protected static final VoxelShape[] TOP_SHAPES = makeShapes(TOP_AABB, OCTET_NNN, OCTET_PNN, OCTET_NNP, OCTET_PNP);
+ protected static final VoxelShape[] BOTTOM_SHAPES = makeShapes(BOTTOM_AABB, OCTET_NPN, OCTET_PPN, OCTET_NPP, OCTET_PPP);
+ private static final int[] SHAPE_BY_STATE = new int[] { 12, 5, 3, 10, 14, 13, 7, 11, 13, 7, 11, 14, 8, 4, 1, 2, 4, 1, 2, 8 };
+
+ private static VoxelShape[] makeShapes(VoxelShape p_56934_, VoxelShape p_56935_, VoxelShape p_56936_, VoxelShape p_56937_, VoxelShape p_56938_) {
+ return IntStream.range(0, 16).mapToObj((p_56945_) -> {
+ return makeStairShape(p_56945_, p_56934_, p_56935_, p_56936_, p_56937_, p_56938_);
+ }).toArray((p_56949_) -> {
+ return new VoxelShape[p_56949_];
+ });
+ }
+
+ private static VoxelShape makeStairShape(int p_56865_, VoxelShape p_56866_, VoxelShape p_56867_, VoxelShape p_56868_, VoxelShape p_56869_, VoxelShape p_56870_) {
+ VoxelShape voxelshape = p_56866_;
+ if ((p_56865_ & 1) != 0) {
+ voxelshape = Shapes.or(p_56866_, p_56867_);
+ }
+
+ if ((p_56865_ & 2) != 0) {
+ voxelshape = Shapes.or(voxelshape, p_56868_);
+ }
+
+ if ((p_56865_ & 4) != 0) {
+ voxelshape = Shapes.or(voxelshape, p_56869_);
+ }
+
+ if ((p_56865_ & 8) != 0) {
+ voxelshape = Shapes.or(voxelshape, p_56870_);
+ }
+
+ return voxelshape;
+ }
+
+ public FrameStairs() {
+ super(BlockBehaviour.Properties.copy(Registration.FRAME_BLOCK.get()));
+ this.registerDefaultState(
+ this.stateDefinition.any()
+ .setValue(FACING, Direction.NORTH)
+ .setValue(HALF, Half.BOTTOM)
+ .setValue(SHAPE, StairsShape.STRAIGHT)
+ .setValue(WATERLOGGED, Boolean.valueOf(false))
+ .setValue(TEXTURE, ModelProperty.frame_block));
+ }
+
+ @Override
+ public VoxelShape getShape(BlockState blockState, BlockGetter blockGetter, BlockPos blockPos, CollisionContext collisionContext) {
+ return (blockState.getValue(HALF) == Half.TOP ? TOP_SHAPES : BOTTOM_SHAPES)[SHAPE_BY_STATE[this.getShapeIndex(blockState)]];
+ }
+
+ private int getShapeIndex(BlockState blockState) {
+ return blockState.getValue(SHAPE).ordinal() * 4 + blockState.getValue(FACING).get2DDataValue();
+ }
+
+ @Override
+ public BlockState getStateForPlacement(BlockPlaceContext context) {
+ Direction direction = context.getClickedFace();
+ BlockPos blockpos = context.getClickedPos();
+ FluidState fluidstate = context.getLevel().getFluidState(blockpos);
+ return defaultBlockState()
+ .setValue(FACING, context.getHorizontalDirection())
+ .setValue(HALF, direction != Direction.DOWN && (direction == Direction.UP || !(context.getClickLocation().y - (double) blockpos.getY() > 0.5D)) ? Half.BOTTOM : Half.TOP)
+ .setValue(WATERLOGGED, Boolean.valueOf(fluidstate.getType() == Fluids.WATER))
+ .setValue(TEXTURE, ModelProperty.frame_block);
+ }
+
+ @Override
+ protected void createBlockStateDefinition(StateDefinition.Builder builder) {
+ super.createBlockStateDefinition(builder);
+ builder
+ .add(FACING)
+ .add(HALF)
+ .add(SHAPE)
+ .add(WATERLOGGED)
+ .add(TEXTURE);
+ }
+
+ public FluidState getFluidState(BlockState blockState) {
+ return blockState.getValue(WATERLOGGED) ? Fluids.WATER.getSource(false) : super.getFluidState(blockState);
+ }
+
+ public static void setupFrame(ArrayList blocks) {
+ eligibleBlocks = blocks;
+ }
+
+ @Override
+ public InteractionResult use(BlockState state, Level level, BlockPos pos, Player player, InteractionHand hand,
+ BlockHitResult result) {
+ ItemStack held = player.getItemInHand(hand);
+ Item heldItem = held.getItem();
+ if (!level.isClientSide && heldItem == Items.AIR) {
+ return InteractionResult.FAIL;
+ } else if (heldItem == Registration.FRAME_BLOCK_ITEM.get()) {
+ return InteractionResult.PASS;
+ } else if (heldItem != null && eligibleBlocks.contains(heldItem.toString())) {
+ ModelProperty newProperty = ModelProperty.valueOf(heldItem.toString());
+ if (newProperty == state.getValue(TEXTURE)) {
+ return InteractionResult.PASS;
+ } else {
+ removeState(state, player);
+ state = state.setValue(TEXTURE, newProperty);
+ level.setBlock(pos, state, 10);
+ held.shrink(1);
+ player.setItemInHand(hand, held);
+ return InteractionResult.CONSUME;
+ }
+ }
+ return InteractionResult.FAIL;
+ }
+
+ @Override
+ public void attack(BlockState state, Level level, BlockPos pos, Player player) {
+
+ if (!level.isClientSide) {
+ if (state.getValue(TEXTURE) != ModelProperty.frame_block) {
+
+ removeState(state, player);
+
+ state = state.setValue(TEXTURE, ModelProperty.frame_block);
+ level.setBlock(pos, state, 10);
+ }
+ }
+ }
+
+ private void removeState(BlockState state, Player player) {
+ String item_name = state.getValue(TEXTURE).toString();
+ ResourceLocation rl = new ResourceLocation(item_name);
+ Item new_item = ForgeRegistries.ITEMS.getValue(rl);
+
+ if (new_item == Items.AIR) {
+ rl = new ResourceLocation(LavaMod.MODID, item_name);
+ new_item = ForgeRegistries.ITEMS.getValue(rl);
+ } else if (new_item != Registration.FRAME_BLOCK_ITEM.get()) {
+ player.addItem(new ItemStack(new_item));
+ }
+ }
+}
diff --git a/Lava/src/main/java/se/datasektionen/lava/blocks/SlopeBlock.java b/Lava/src/main/java/se/datasektionen/lava/blocks/SlopeBlock.java
deleted file mode 100644
index 61c0267d..00000000
--- a/Lava/src/main/java/se/datasektionen/lava/blocks/SlopeBlock.java
+++ /dev/null
@@ -1,90 +0,0 @@
-package se.datasektionen.lava.blocks;
-
-import java.util.EnumMap;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Stream;
-
-import net.minecraft.core.BlockPos;
-import net.minecraft.core.Direction;
-import net.minecraft.world.InteractionHand;
-import net.minecraft.world.InteractionResult;
-import net.minecraft.world.entity.EntityType;
-import net.minecraft.world.entity.animal.Pig;
-import net.minecraft.world.entity.player.Player;
-import net.minecraft.world.item.Item;
-import net.minecraft.world.item.ItemStack;
-import net.minecraft.world.item.context.BlockPlaceContext;
-import net.minecraft.world.level.BlockGetter;
-import net.minecraft.world.level.Level;
-import net.minecraft.world.level.block.Block;
-import net.minecraft.world.level.block.HorizontalDirectionalBlock;
-import net.minecraft.world.level.block.state.BlockState;
-import net.minecraft.world.level.block.state.StateDefinition;
-import net.minecraft.world.level.material.Material;
-import net.minecraft.world.phys.BlockHitResult;
-import net.minecraft.world.phys.shapes.BooleanOp;
-import net.minecraft.world.phys.shapes.CollisionContext;
-import net.minecraft.world.phys.shapes.Shapes;
-import net.minecraft.world.phys.shapes.VoxelShape;
-import se.datasektionen.lava.LavaMod;
-import se.datasektionen.lava.setup.Registration;
-
-public class SlopeBlock extends HorizontalDirectionalBlock {
-
-
- private static final Map SHAPES = new EnumMap<>(Direction.class);
-
- public SlopeBlock() {
- super(Properties.of(Material.WOOD).noOcclusion().strength(2.0f).requiresCorrectToolForDrops());
- registerDefaultState(this.defaultBlockState().setValue(FACING, Direction.NORTH));
- runCalculation(SHAPE.orElse(Shapes.block()));
- }
-
-
- //The voxelshape of the slope
- private static final Optional SHAPE = Stream.of(
- Block.box(0, 0, 0, 16, 2, 16),
- Block.box(0, 2, 2, 16, 4, 16),
- Block.box(0, 4, 4, 16, 6, 16),
- Block.box(0, 6, 6, 16, 8, 16),
- Block.box(0, 8, 8, 16, 12, 16),
- Block.box(0, 12, 13, 16, 16, 16)
- //Block.box(0, 0, 0, 16, 23, 0),
- //Block.box(0, 0, 16, 16, 16, 16)
- ).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR));
-
- @Override
- public VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) {
- return SHAPES.get(state.getValue(FACING));
- }
-
-
- /**
- * A function that makes the block always face the player when placed
- */
- protected void createBlockStateDefinition(StateDefinition.Builder builder) {
- super.createBlockStateDefinition(builder);
- builder.add(FACING);
- }
-
- /**
- * For each direction there is in the world, calculate how the voxels (kinda hitboxes) should be set up
- * (which is done through the LavaMod.calculateShapes() function)
- *
- * @param shape, the shape the calculations should be done for
- */
- protected void runCalculation(VoxelShape shape) {
- for (Direction direction : Direction.values())
- SHAPES.put(direction, LavaMod.calculateShapes(direction, shape));
- }
-
- @Override
- public BlockState getStateForPlacement(BlockPlaceContext context) {
- return defaultBlockState().setValue(FACING, context.getHorizontalDirection().getOpposite());
- }
-
-
-
-}
diff --git a/Lava/src/main/java/se/datasektionen/lava/datagen/BlockStates.java b/Lava/src/main/java/se/datasektionen/lava/datagen/BlockStates.java
index da068acc..211a1524 100644
--- a/Lava/src/main/java/se/datasektionen/lava/datagen/BlockStates.java
+++ b/Lava/src/main/java/se/datasektionen/lava/datagen/BlockStates.java
@@ -2,6 +2,7 @@
import se.datasektionen.lava.LavaMod;
import se.datasektionen.lava.blocks.FrameBlock;
+import se.datasektionen.lava.blocks.FrameStairs;
import se.datasektionen.lava.blocks.utils.ModelProperty;
import se.datasektionen.lava.setup.Registration;
import net.minecraft.client.renderer.block.model.BlockModel;
@@ -9,6 +10,7 @@
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
+import net.minecraft.world.level.block.StairBlock;
import net.minecraftforge.client.model.generators.BlockModelBuilder;
import net.minecraftforge.client.model.generators.BlockModelProvider;
import net.minecraftforge.client.model.generators.BlockStateProvider;
@@ -32,6 +34,7 @@ protected void registerStatesAndModels() {
// simpleBlock(Registration.FRAME_BLOCK.get());
registerSlope();
registerFrame();
+ //registerFrameStairs();
// dumbSpaghetti();
// Dont really know how to do this when it isnt a simpleblock...
// horizontalBlock(Registration.SLOPE_BLOCK.get(), null);
@@ -40,9 +43,9 @@ protected void registerStatesAndModels() {
private void registerSlope() {
// BlockModelBuilder slope = models().getBuilder("block/slope_block");
- Block block = Registration.SLOPE_BLOCK.get();
+ Block block = Registration.FRAME_SLOPE.get();
ResourceLocation slope_back = modLoc("block/frame_block");
- ResourceLocation slope_side = modLoc("block/frame_slope_slide");
+ ResourceLocation slope_side = modLoc("block/frame_slope_side");
horizontalBlock(block, models().orientableVertical(block.getRegistryName().getPath(), slope_side, slope_back));
}
@@ -82,7 +85,6 @@ private void registerFrame() {
PartialBlockstate partialBlockstate = null;
int counter = 0;
-
for (ModelProperty modelProperty : ModelProperty.values()) {
counter++;
@@ -101,13 +103,13 @@ private void registerFrame() {
} else {
texture = modLoc(index_block);
}
- //System.out.println(texture);
+ // System.out.println(texture);
UncheckedModelFile file = new UncheckedModelFile(texture);
ConfiguredModel model = new ConfiguredModel(file);
partialBlockstate = partialBlockstate.with(FrameBlock.TEXTURE, modelProperty).addModels(model);
}
-
+
partialBlockstate = partialBlockstate.partialState();
String index_block = "block/frame_block";
ResourceLocation texture = modLoc(index_block);
@@ -116,4 +118,41 @@ private void registerFrame() {
}
+ private void registerFrameStairs() {
+ Block block = Registration.FRAME_STAIRS.get();
+ PartialBlockstate partialBlockstate = null;
+ int counter = 0;
+
+ for (ModelProperty modelProperty : ModelProperty.values()) {
+ counter++;
+ // System.out.println(modelProperty);
+ String index_block = "block/" + modelProperty.toString();
+
+ if (partialBlockstate == null) {
+ partialBlockstate = getVariantBuilder(block).partialState();
+ } else {
+ partialBlockstate = partialBlockstate.partialState();
+ }
+
+ ResourceLocation texture = null;
+ if (counter < 686) {
+ texture = mcLoc(index_block);
+ } else {
+ texture = modLoc(index_block);
+ }
+ // System.out.println(texture);
+ UncheckedModelFile file = new UncheckedModelFile(texture);
+ ConfiguredModel model = new ConfiguredModel(file);
+
+ partialBlockstate = partialBlockstate.with(FrameStairs.TEXTURE, modelProperty).addModels(model);
+ }
+
+ partialBlockstate = partialBlockstate.partialState();
+ String index_block = "block/frame_block";
+ ResourceLocation texture = modLoc(index_block);
+ ConfiguredModel model = new ConfiguredModel(models().cubeAll(index_block, texture));
+ partialBlockstate = partialBlockstate.with(FrameStairs.TEXTURE, ModelProperty.frame_block).addModels(model);
+
+ }
+
}
diff --git a/Lava/src/main/java/se/datasektionen/lava/datagen/ItemModels.java b/Lava/src/main/java/se/datasektionen/lava/datagen/ItemModels.java
index d78af7da..09654742 100644
--- a/Lava/src/main/java/se/datasektionen/lava/datagen/ItemModels.java
+++ b/Lava/src/main/java/se/datasektionen/lava/datagen/ItemModels.java
@@ -16,9 +16,12 @@ public ItemModels(DataGenerator generator, ExistingFileHelper existingFileHelper
@Override
protected void registerModels() {
- withExistingParent(Registration.OBSIDIAN_INSCRIPTIONS_ITEM.get().getRegistryName().getPath(), modLoc("block/obsidian_inscriptions"));
- withExistingParent(Registration.FRAME_BLOCK_ITEM.get().getRegistryName().getPath(), modLoc("block/frame_block"));
- withExistingParent(Registration.SLOPE_BLOCK_ITEM.get().getRegistryName().getPath(), modLoc("block/slope_block"));
+ withExistingParent(Registration.OBSIDIAN_INSCRIPTIONS_ITEM.get().getRegistryName().getPath(),
+ modLoc("block/obsidian_inscriptions"));
+ withExistingParent(Registration.FRAME_BLOCK_ITEM.get().getRegistryName().getPath(),
+ modLoc("block/frame_block"));
+ withExistingParent(Registration.FRAME_SLOPE_ITEM.get().getRegistryName().getPath(),
+ modLoc("block/frame_slope"));
}
}
diff --git a/Lava/src/main/java/se/datasektionen/lava/datagen/LavaBlockTags.java b/Lava/src/main/java/se/datasektionen/lava/datagen/LavaBlockTags.java
index f8a29779..b477c43d 100644
--- a/Lava/src/main/java/se/datasektionen/lava/datagen/LavaBlockTags.java
+++ b/Lava/src/main/java/se/datasektionen/lava/datagen/LavaBlockTags.java
@@ -6,6 +6,9 @@
import net.minecraft.data.DataGenerator;
import net.minecraft.data.tags.BlockTagsProvider;
import net.minecraft.tags.BlockTags;
+import net.minecraft.tags.Tag;
+import net.minecraft.world.level.block.Block;
+import net.minecraftforge.common.Tags;
import net.minecraftforge.common.data.ExistingFileHelper;
public class LavaBlockTags extends BlockTagsProvider {
@@ -17,17 +20,18 @@ public LavaBlockTags(DataGenerator p_126511_, ExistingFileHelper existingFileHel
@Override
protected void addTags() {
- tag(BlockTags.MINEABLE_WITH_AXE)
- .add(Registration.FRAME_BLOCK.get())
- .add(Registration.SLOPE_BLOCK.get());
+ tag((Tag.Named) BlockTags.MINEABLE_WITH_AXE)
+ .add(Registration.FRAME_BLOCK.get())
+ .add(Registration.FRAME_SLOPE.get());
tag(BlockTags.MINEABLE_WITH_PICKAXE)
- .add(Registration.OBSIDIAN_INSCRIPTIONS.get());
+ .add(Registration.OBSIDIAN_INSCRIPTIONS.get());
tag(BlockTags.NEEDS_STONE_TOOL)
- .add(Registration.SLOPE_BLOCK.get());
+ .add(Registration.FRAME_SLOPE.get());
tag(BlockTags.NEEDS_DIAMOND_TOOL)
- .add(Registration.OBSIDIAN_INSCRIPTIONS.get());
+ .add(Registration.OBSIDIAN_INSCRIPTIONS.get());
tag(BlockTags.DRAGON_IMMUNE)
- .add(Registration.OBSIDIAN_INSCRIPTIONS.get());
+ .add(Registration.OBSIDIAN_INSCRIPTIONS.get());
+
}
@Override
diff --git a/Lava/src/main/java/se/datasektionen/lava/datagen/LavaLanguageProvider.java b/Lava/src/main/java/se/datasektionen/lava/datagen/LavaLanguageProvider.java
index 7a6600bb..ce1b7d27 100644
--- a/Lava/src/main/java/se/datasektionen/lava/datagen/LavaLanguageProvider.java
+++ b/Lava/src/main/java/se/datasektionen/lava/datagen/LavaLanguageProvider.java
@@ -19,7 +19,9 @@ protected void addTranslations() {
add("itemGroup." + ModSetup.TAB_NAME, "Lava");
add(Registration.OBSIDIAN_INSCRIPTIONS.get(), "Obsidian Inscriptions");
add(Registration.FRAME_BLOCK.get(), "Frame Block");
- add(Registration.SLOPE_BLOCK.get(), "Slope Block");
+ add(Registration.FRAME_SLOPE.get(), "Frame Slope Block");
+ add(Registration.FRAME_STAIRS.get(), "Frame Stair Block");
+ add(Registration.FRAME_SLAB.get(), "Frame Slab Block");
}
}
diff --git a/Lava/src/main/java/se/datasektionen/lava/datagen/LootTables.java b/Lava/src/main/java/se/datasektionen/lava/datagen/LootTables.java
index b51c2f20..100d1528 100644
--- a/Lava/src/main/java/se/datasektionen/lava/datagen/LootTables.java
+++ b/Lava/src/main/java/se/datasektionen/lava/datagen/LootTables.java
@@ -12,7 +12,9 @@ public LootTables(DataGenerator dataGeneratorIn) {
@Override
protected void addTables() {
- lootTables.put(Registration.FRAME_BLOCK.get(), createSimpleTable("frame_block", Registration.FRAME_BLOCK.get()));
- lootTables.put(Registration.SLOPE_BLOCK.get(), createSimpleTable("slope_block", Registration.SLOPE_BLOCK.get()));
+ lootTables.put(Registration.FRAME_BLOCK.get(),
+ createSimpleTable("frame_block", Registration.FRAME_BLOCK.get()));
+ lootTables.put(Registration.FRAME_SLOPE.get(),
+ createSimpleTable("frame_slope", Registration.FRAME_SLOPE.get()));
}
}
diff --git a/Lava/src/main/java/se/datasektionen/lava/datagen/Recipes.java b/Lava/src/main/java/se/datasektionen/lava/datagen/Recipes.java
index 1f94335d..ae4c5ca8 100644
--- a/Lava/src/main/java/se/datasektionen/lava/datagen/Recipes.java
+++ b/Lava/src/main/java/se/datasektionen/lava/datagen/Recipes.java
@@ -8,6 +8,7 @@
import java.util.function.Consumer;
import net.minecraft.data.recipes.ShapedRecipeBuilder;
+import net.minecraft.world.level.ItemLike;
import net.minecraftforge.common.Tags;
import se.datasektionen.lava.setup.Registration;
@@ -21,13 +22,13 @@ public Recipes(DataGenerator p_125973_) {
@Override
protected void buildCraftingRecipes(Consumer consumer) {
ShapedRecipeBuilder.shaped(Registration.FRAME_BLOCK.get())
- .pattern("x x")
- .pattern(" x ")
- .pattern("x x")
- .define('x', Tags.Items.RODS_WOODEN)
- .group("lava")
- .unlockedBy("framing", InventoryChangeTrigger.TriggerInstance.hasItems(Registration.FRAME_BLOCK.get()))
- .save(consumer);
+ .pattern("x x")
+ .pattern(" x ")
+ .pattern("x x")
+ .define('x', Tags.Items.RODS_WOODEN)
+ .group("lava")
+ .unlockedBy("framing", InventoryChangeTrigger.TriggerInstance.hasItems(Registration.FRAME_BLOCK.get()))
+ .save(consumer);
}
}
diff --git a/Lava/src/main/java/se/datasektionen/lava/setup/ClientSetup.java b/Lava/src/main/java/se/datasektionen/lava/setup/ClientSetup.java
index 7fa4d402..903cddea 100644
--- a/Lava/src/main/java/se/datasektionen/lava/setup/ClientSetup.java
+++ b/Lava/src/main/java/se/datasektionen/lava/setup/ClientSetup.java
@@ -5,15 +5,17 @@
import net.minecraft.client.renderer.RenderType;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import se.datasektionen.lava.blocks.FrameBlock;
+import se.datasektionen.lava.blocks.FrameStairs;
public class ClientSetup {
public static void init(FMLClientSetupEvent event) {
event.enqueueWork(() -> {
ItemBlockRenderTypes.setRenderLayer(Registration.FRAME_BLOCK.get(), RenderType.cutout());
- ItemBlockRenderTypes.setRenderLayer(Registration.SLOPE_BLOCK.get(), RenderType.cutout());
+ ItemBlockRenderTypes.setRenderLayer(Registration.FRAME_SLOPE.get(), RenderType.cutout());
});
FrameBlock.setupFrame();
+ FrameStairs.setupFrame(FrameBlock.eligibleBlocks);
}
}
diff --git a/Lava/src/main/java/se/datasektionen/lava/setup/Registration.java b/Lava/src/main/java/se/datasektionen/lava/setup/Registration.java
index 947e7f9e..9b6767e0 100644
--- a/Lava/src/main/java/se/datasektionen/lava/setup/Registration.java
+++ b/Lava/src/main/java/se/datasektionen/lava/setup/Registration.java
@@ -5,6 +5,7 @@
import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
+import net.minecraft.world.level.block.Blocks;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
@@ -17,17 +18,27 @@
import net.minecraft.world.level.levelgen.feature.StructureFeature;
import net.minecraft.world.level.block.state.BlockBehaviour;
import se.datasektionen.lava.blocks.FrameBlock;
-import se.datasektionen.lava.blocks.SlopeBlock;
+import se.datasektionen.lava.blocks.FrameSlab;
+import se.datasektionen.lava.blocks.FrameSlope;
+import se.datasektionen.lava.blocks.FrameStairs;
+import net.minecraft.world.level.block.StairBlock;
+import net.minecraft.world.level.block.state.BlockBehaviour;
+import net.minecraft.world.level.block.state.BlockState;
+import net.minecraft.world.level.block.state.BlockBehaviour.Properties;
public class Registration {
private static final DeferredRegister BLOCKS = DeferredRegister.create(ForgeRegistries.BLOCKS, MODID);
private static final DeferredRegister- ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MODID);
- private static final DeferredRegister> BLOCK_ENTITIES = DeferredRegister.create(ForgeRegistries.BLOCK_ENTITIES, MODID);
- private static final DeferredRegister> CONTAINERS = DeferredRegister.create(ForgeRegistries.CONTAINERS, MODID);
- private static final DeferredRegister> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITIES, MODID);
- private static final DeferredRegister> STRUCTURES = DeferredRegister.create(ForgeRegistries.STRUCTURE_FEATURES, MODID);
-
+ private static final DeferredRegister> BLOCK_ENTITIES = DeferredRegister
+ .create(ForgeRegistries.BLOCK_ENTITIES, MODID);
+ private static final DeferredRegister> CONTAINERS = DeferredRegister.create(ForgeRegistries.CONTAINERS,
+ MODID);
+ private static final DeferredRegister> ENTITIES = DeferredRegister.create(ForgeRegistries.ENTITIES,
+ MODID);
+ private static final DeferredRegister> STRUCTURES = DeferredRegister
+ .create(ForgeRegistries.STRUCTURE_FEATURES, MODID);
+
public static void init() {
IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
@@ -36,19 +47,26 @@ public static void init() {
BLOCK_ENTITIES.register(bus);
CONTAINERS.register(bus);
ENTITIES.register(bus);
- STRUCTURES.register(bus);
+ STRUCTURES.register(bus);
}
public static final Item.Properties ITEM_PROPERTIES = new Item.Properties().tab(ModSetup.ITEM_GROUP);
- public static final RegistryObject OBSIDIAN_INSCRIPTIONS = BLOCKS.register("obsidian_inscriptions", () -> new Block(BlockBehaviour.Properties.of(Material.STONE).strength(50f).explosionResistance(1200f)));
+ public static final RegistryObject OBSIDIAN_INSCRIPTIONS = BLOCKS.register("obsidian_inscriptions",
+ () -> new Block(BlockBehaviour.Properties.of(Material.STONE).strength(50f).explosionResistance(1200f)));
public static final RegistryObject
- OBSIDIAN_INSCRIPTIONS_ITEM = fromBlock(OBSIDIAN_INSCRIPTIONS);
public static final RegistryObject FRAME_BLOCK = BLOCKS.register("frame_block", FrameBlock::new);
public static final RegistryObject
- FRAME_BLOCK_ITEM = fromBlock(FRAME_BLOCK);
-
- public static final RegistryObject SLOPE_BLOCK = BLOCKS.register("slope_block", () -> new SlopeBlock());
- public static final RegistryObject
- SLOPE_BLOCK_ITEM = fromBlock(SLOPE_BLOCK);
+
+ public static final RegistryObject FRAME_SLOPE = BLOCKS.register("frame_slope", FrameSlope::new);
+ public static final RegistryObject
- FRAME_SLOPE_ITEM = fromBlock(FRAME_SLOPE);
+
+ public static final RegistryObject FRAME_STAIRS = BLOCKS.register("frame_stairs", FrameStairs::new);
+ public static final RegistryObject
- FRAME_STAIRS_ITEM = fromBlock(FRAME_STAIRS);
+
+ public static final RegistryObject FRAME_SLAB = BLOCKS.register("frame_slab", FrameSlab::new);
+ public static final RegistryObject
- FRAME_SLAB_ITEM = fromBlock(FRAME_SLAB);
public static RegistryObject
- fromBlock(RegistryObject block) {
return ITEMS.register(block.getId().getPath(), () -> new BlockItem(block.get(), ITEM_PROPERTIES));
diff --git a/Lava/src/main/resources/assets/lava/blockstates/frame_slab.json b/Lava/src/main/resources/assets/lava/blockstates/frame_slab.json
new file mode 100644
index 00000000..fde6f0fc
--- /dev/null
+++ b/Lava/src/main/resources/assets/lava/blockstates/frame_slab.json
@@ -0,0 +1,13 @@
+{
+ "variants": {
+ "type=bottom": {
+ "model": "lava:block/frame_slab"
+ },
+ "type=double": {
+ "model": "lava:block/frame_block"
+ },
+ "type=top": {
+ "model": "lava:block/frame_slab_top"
+ }
+ }
+}
\ No newline at end of file
diff --git a/Lava/src/main/resources/assets/lava/blockstates/frame_stairs.json b/Lava/src/main/resources/assets/lava/blockstates/frame_stairs.json
new file mode 100644
index 00000000..61f77c39
--- /dev/null
+++ b/Lava/src/main/resources/assets/lava/blockstates/frame_stairs.json
@@ -0,0 +1,174 @@
+{
+ "variants": {
+ "facing=east,half=bottom,shape=inner_left": {
+ "model": "lava:block/frame_stairs_inner",
+ "y": 270
+ },
+ "facing=east,half=bottom,shape=inner_right": {
+ "model": "lava:block/frame_stairs_inner"
+ },
+ "facing=east,half=bottom,shape=outer_left": {
+ "model": "lava:block/frame_stairs_outer",
+ "y": 270
+ },
+ "facing=east,half=bottom,shape=outer_right": {
+ "model": "lava:block/frame_stairs_outer"
+ },
+ "facing=east,half=bottom,shape=straight": {
+ "model": "lava:block/frame_stairs"
+ },
+ "facing=east,half=top,shape=inner_left": {
+ "model": "lava:block/frame_stairs_inner",
+ "x": 180
+ },
+ "facing=east,half=top,shape=inner_right": {
+ "model": "lava:block/frame_stairs_inner",
+ "x": 180,
+ "y": 90
+ },
+ "facing=east,half=top,shape=outer_left": {
+ "model": "lava:block/frame_stairs_outer",
+ "x": 180
+ },
+ "facing=east,half=top,shape=outer_right": {
+ "model": "lava:block/frame_stairs_outer",
+ "x": 180,
+ "y": 90
+ },
+ "facing=east,half=top,shape=straight": {
+ "model": "lava:block/frame_stairs",
+ "x": 180
+ },
+ "facing=north,half=bottom,shape=inner_left": {
+ "model": "lava:block/frame_stairs_inner",
+ "y": 180
+ },
+ "facing=north,half=bottom,shape=inner_right": {
+ "model": "lava:block/frame_stairs_inner",
+ "y": 270
+ },
+ "facing=north,half=bottom,shape=outer_left": {
+ "model": "lava:block/frame_stairs_outer",
+ "y": 180
+ },
+ "facing=north,half=bottom,shape=outer_right": {
+ "model": "lava:block/frame_stairs_outer",
+ "y": 270
+ },
+ "facing=north,half=bottom,shape=straight": {
+ "model": "lava:block/frame_stairs",
+ "y": 270
+ },
+ "facing=north,half=top,shape=inner_left": {
+ "model": "lava:block/frame_stairs_inner",
+ "x": 180,
+ "y": 270
+ },
+ "facing=north,half=top,shape=inner_right": {
+ "model": "lava:block/frame_stairs_inner",
+ "x": 180
+ },
+ "facing=north,half=top,shape=outer_left": {
+ "model": "lava:block/frame_stairs_outer",
+ "x": 180,
+ "y": 270
+ },
+ "facing=north,half=top,shape=outer_right": {
+ "model": "lava:block/frame_stairs_outer",
+ "x": 180
+ },
+ "facing=north,half=top,shape=straight": {
+ "model": "lava:block/frame_stairs",
+ "x": 180,
+ "y": 270
+ },
+ "facing=south,half=bottom,shape=inner_left": {
+ "model": "lava:block/frame_stairs_inner"
+ },
+ "facing=south,half=bottom,shape=inner_right": {
+ "model": "lava:block/frame_stairs_inner",
+ "y": 90
+ },
+ "facing=south,half=bottom,shape=outer_left": {
+ "model": "lava:block/frame_stairs_outer"
+ },
+ "facing=south,half=bottom,shape=outer_right": {
+ "model": "lava:block/frame_stairs_outer",
+ "y": 90
+ },
+ "facing=south,half=bottom,shape=straight": {
+ "model": "lava:block/frame_stairs",
+ "y": 90
+ },
+ "facing=south,half=top,shape=inner_left": {
+ "model": "lava:block/frame_stairs_inner",
+ "x": 180,
+ "y": 90
+ },
+ "facing=south,half=top,shape=inner_right": {
+ "model": "lava:block/frame_stairs_inner",
+ "x": 180,
+ "y": 180
+ },
+ "facing=south,half=top,shape=outer_left": {
+ "model": "lava:block/frame_stairs_outer",
+ "x": 180,
+ "y": 90
+ },
+ "facing=south,half=top,shape=outer_right": {
+ "model": "lava:block/frame_stairs_outer",
+ "x": 180,
+ "y": 180
+ },
+ "facing=south,half=top,shape=straight": {
+ "model": "lava:block/frame_stairs",
+ "x": 180,
+ "y": 90
+ },
+ "facing=west,half=bottom,shape=inner_left": {
+ "model": "lava:block/frame_stairs_inner",
+ "y": 90
+ },
+ "facing=west,half=bottom,shape=inner_right": {
+ "model": "lava:block/frame_stairs_inner",
+ "y": 180
+ },
+ "facing=west,half=bottom,shape=outer_left": {
+ "model": "lava:block/frame_stairs_outer",
+ "y": 90
+ },
+ "facing=west,half=bottom,shape=outer_right": {
+ "model": "lava:block/frame_stairs_outer",
+ "y": 180
+ },
+ "facing=west,half=bottom,shape=straight": {
+ "model": "lava:block/frame_stairs",
+ "y": 180
+ },
+ "facing=west,half=top,shape=inner_left": {
+ "model": "lava:block/frame_stairs_inner",
+ "x": 180,
+ "y": 180
+ },
+ "facing=west,half=top,shape=inner_right": {
+ "model": "lava:block/frame_stairs_inner",
+ "x": 180,
+ "y": 270
+ },
+ "facing=west,half=top,shape=outer_left": {
+ "model": "lava:block/frame_stairs_outer",
+ "x": 180,
+ "y": 180
+ },
+ "facing=west,half=top,shape=outer_right": {
+ "model": "lava:block/frame_stairs_outer",
+ "x": 180,
+ "y": 270
+ },
+ "facing=west,half=top,shape=straight": {
+ "model": "lava:block/frame_stairs",
+ "x": 180,
+ "y": 180
+ }
+ }
+}
\ No newline at end of file
diff --git a/Lava/src/main/resources/assets/lava/models/block/frame_slab.json b/Lava/src/main/resources/assets/lava/models/block/frame_slab.json
new file mode 100644
index 00000000..7a5d94be
--- /dev/null
+++ b/Lava/src/main/resources/assets/lava/models/block/frame_slab.json
@@ -0,0 +1,24 @@
+{
+ "credit": "Made with Blockbench",
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "0": "lava:block/frame_block",
+ "1": "lava:block/frame_block_stair_side",
+ "particle": "lava:block/frame_block"
+ },
+ "elements": [
+ {
+ "name": "Slab",
+ "from": [0, 0, 0],
+ "to": [16, 8, 16],
+ "faces": {
+ "north": {"uv": [0, 8, 16, 16], "texture": "#1", "cullface": "north"},
+ "east": {"uv": [0, 8, 16, 16], "texture": "#1", "cullface": "east"},
+ "south": {"uv": [0, 8, 16, 16], "texture": "#1", "cullface": "south"},
+ "west": {"uv": [0, 8, 16, 16], "texture": "#1", "cullface": "west"},
+ "up": {"uv": [0, 0, 16, 16], "texture": "#0"},
+ "down": {"uv": [0, 0, 16, 16], "texture": "#0", "cullface": "down"}
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Lava/src/main/resources/assets/lava/models/block/frame_slab_top.json b/Lava/src/main/resources/assets/lava/models/block/frame_slab_top.json
new file mode 100644
index 00000000..d60478e9
--- /dev/null
+++ b/Lava/src/main/resources/assets/lava/models/block/frame_slab_top.json
@@ -0,0 +1,24 @@
+{
+ "credit": "Made with Blockbench",
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "0": "lava:block/frame_block_stair_side",
+ "1": "lava:block/frame_block",
+ "particle": "lava:block/frame_block_stair_side"
+ },
+ "elements": [
+ {
+ "name": "Slab",
+ "from": [0, 8, 0],
+ "to": [16, 16, 16],
+ "faces": {
+ "north": {"uv": [16, 16, 0, 8], "texture": "#0", "cullface": "north"},
+ "east": {"uv": [0, 16, 16, 8], "texture": "#0", "cullface": "east"},
+ "south": {"uv": [0, 16, 16, 8], "texture": "#0", "cullface": "south"},
+ "west": {"uv": [0, 16, 16, 8], "texture": "#0", "cullface": "west"},
+ "up": {"uv": [0, 0, 16, 16], "texture": "#1", "cullface": "up"},
+ "down": {"uv": [0, 0, 16, 16], "texture": "#1"}
+ }
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Lava/bin/main/assets/lava/models/block/slope_block.json b/Lava/src/main/resources/assets/lava/models/block/frame_slope.json
similarity index 68%
rename from Lava/bin/main/assets/lava/models/block/slope_block.json
rename to Lava/src/main/resources/assets/lava/models/block/frame_slope.json
index 15b8d178..dc328f21 100644
--- a/Lava/bin/main/assets/lava/models/block/slope_block.json
+++ b/Lava/src/main/resources/assets/lava/models/block/frame_slope.json
@@ -1,11 +1,14 @@
{
+ "credit": "Made with Blockbench",
+ "parent": "minecraft:block/cube_all",
"textures": {
"0": "lava:block/frame_block",
- "1": "lava:block/frame_slope_slide",
+ "1": "lava:block/frame_slope_side",
"particle": "lava:block/frame_block"
},
"elements": [
{
+ "name": "Front",
"from": [0, 0, 0],
"to": [16, 22.63, 0],
"rotation": {"angle": 45, "axis": "x", "origin": [0, 0, 0]},
@@ -19,6 +22,7 @@
}
},
{
+ "name": "Back",
"from": [0, 0, 16],
"to": [16, 16, 16],
"faces": {
@@ -31,6 +35,7 @@
}
},
{
+ "name": "Bottom",
"from": [0, 0.01, 0],
"to": [16, 0.01, 16],
"faces": {
@@ -43,29 +48,30 @@
}
},
{
+ "name": "Side, west",
"from": [0, 0, 0],
- "to": [0, 22.63, 12],
- "rotation": {"angle": 45, "axis": "x", "origin": [0, 0, 0]},
+ "to": [0, 16, 16],
"faces": {
- "north": {"uv": [0, 0, 12, 0], "rotation": 270, "texture": "#missing"},
- "east": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#1"},
- "south": {"uv": [0, 0, 12, 0], "rotation": 90, "texture": "#missing"},
- "west": {"uv": [0, 0, 16, 16], "texture": "#1"},
- "up": {"uv": [0, 0, 16, 0], "rotation": 90, "texture": "#missing"},
- "down": {"uv": [0, 0, 16, 0], "rotation": 90, "texture": "#missing"}
+ "north": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "east": {"uv": [0, 0, 16, 16], "texture": "#1"},
+ "south": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "west": {"uv": [16, 0, 0, 16], "texture": "#1"},
+ "up": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "down": {"uv": [0, 0, 0, 16], "texture": "#missing"}
}
},
{
+ "name": "Side, east",
"from": [16, 0, 0],
- "to": [16, 22.63, 12],
- "rotation": {"angle": 45, "axis": "x", "origin": [0, 0, 0]},
+ "to": [16, 16, 16],
+ "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]},
"faces": {
- "north": {"uv": [0, 0, 12, 0], "rotation": 270, "texture": "#missing"},
- "east": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#1"},
- "south": {"uv": [0, 0, 12, 0], "rotation": 90, "texture": "#missing"},
- "west": {"uv": [0, 0, 16, 16], "texture": "#1"},
- "up": {"uv": [0, 0, 16, 0], "rotation": 90, "texture": "#missing"},
- "down": {"uv": [0, 0, 16, 0], "rotation": 90, "texture": "#missing"}
+ "north": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "east": {"uv": [0, 0, 16, 16], "texture": "#1"},
+ "south": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "west": {"uv": [16, 0, 0, 16], "texture": "#1"},
+ "up": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "down": {"uv": [0, 0, 0, 16], "texture": "#missing"}
}
}
],
diff --git a/Lava/src/main/resources/assets/lava/models/block/frame_slope_inner.json b/Lava/src/main/resources/assets/lava/models/block/frame_slope_inner.json
new file mode 100644
index 00000000..57f6c002
--- /dev/null
+++ b/Lava/src/main/resources/assets/lava/models/block/frame_slope_inner.json
@@ -0,0 +1,144 @@
+{
+ "credit": "Made with Blockbench",
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "0": "lava:block/frame_block",
+ "2": "lava:block/frame_slope_front",
+ "3": "lava:block/frame_slope_side",
+ "particle": "lava:block/frame_block"
+ },
+ "elements": [
+ {
+ "name": "Bottom",
+ "from": [0, 0.01, 0],
+ "to": [16, 0.01, 16],
+ "faces": {
+ "north": {"uv": [0, 0, 16, 0], "rotation": 180, "texture": "#missing"},
+ "east": {"uv": [0, 0, 0, 16], "rotation": 90, "texture": "#missing"},
+ "south": {"uv": [0, 0, 16, 0], "texture": "#missing"},
+ "west": {"uv": [0, 0, 0, 16], "rotation": 270, "texture": "#missing"},
+ "up": {"uv": [0, 0, 16, 16], "texture": "#0"},
+ "down": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#0"}
+ }
+ },
+ {
+ "name": "Back, south",
+ "from": [0, 0, 16],
+ "to": [16, 16, 16],
+ "faces": {
+ "north": {"uv": [0, 0, 16, 16], "texture": "#0"},
+ "east": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "south": {"uv": [0, 0, 16, 16], "texture": "#0"},
+ "west": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "up": {"uv": [0, 0, 16, 0], "texture": "#missing"},
+ "down": {"uv": [0, 0, 16, 0], "texture": "#missing"}
+ }
+ },
+ {
+ "name": "Front, north",
+ "from": [0, 0, 0],
+ "to": [16, 22.63, 0],
+ "rotation": {"angle": 45, "axis": "x", "origin": [0, 0, 0]},
+ "faces": {
+ "north": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#2"},
+ "east": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "south": {"uv": [0, 0, 16, 16], "rotation": 90, "texture": "#2"},
+ "west": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "up": {"uv": [0, 0, 16, 0], "texture": "#missing"},
+ "down": {"uv": [0, 0, 16, 0], "texture": "#missing"}
+ }
+ },
+ {
+ "name": "Front, west",
+ "from": [0, 0, 0],
+ "to": [22.63, 0, 16],
+ "rotation": {"angle": 45, "axis": "z", "origin": [0, 0, 0]},
+ "faces": {
+ "north": {"uv": [0, 0, 0, 16], "rotation": 270, "texture": "#missing"},
+ "east": {"uv": [0, 0, 16, 0], "texture": "#missing"},
+ "south": {"uv": [0, 0, 0, 16], "rotation": 90, "texture": "#missing"},
+ "west": {"uv": [0, 0, 16, 0], "rotation": 180, "texture": "#missing"},
+ "up": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#2"},
+ "down": {"uv": [0, 0, 16, 16], "rotation": 270, "texture": "#2"}
+ }
+ },
+ {
+ "name": "Side, north",
+ "from": [0, 0, 0],
+ "to": [16, 16, 0],
+ "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]},
+ "faces": {
+ "north": {"uv": [0, 0, 16, 16], "texture": "#3"},
+ "east": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "south": {"uv": [16, 0, 0, 16], "texture": "#3"},
+ "west": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "up": {"uv": [0, 0, 0, 16], "rotation": 270, "texture": "#missing"},
+ "down": {"uv": [0, 0, 0, 16], "rotation": 90, "texture": "#missing"}
+ }
+ },
+ {
+ "name": "Side, west",
+ "from": [0, 0, 0],
+ "to": [0, 16, 16],
+ "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]},
+ "faces": {
+ "north": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "east": {"uv": [0, 0, 16, 16], "texture": "#3"},
+ "south": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "west": {"uv": [16, 0, 0, 16], "texture": "#3"},
+ "up": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "down": {"uv": [0, 0, 0, 16], "texture": "#missing"}
+ }
+ },
+ {
+ "name": "Back, east",
+ "from": [16, 0, 0],
+ "to": [16, 16, 16],
+ "faces": {
+ "north": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "east": {"uv": [0, 0, 16, 16], "texture": "#0"},
+ "south": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "west": {"uv": [0, 0, 16, 16], "texture": "#0"},
+ "up": {"uv": [0, 0, 16, 0], "rotation": 90, "texture": "#missing"},
+ "down": {"uv": [0, 0, 16, 0], "rotation": 270, "texture": "#missing"}
+ }
+ }
+ ],
+ "display": {
+ "thirdperson_righthand": {
+ "rotation": [-180, 1, 0],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "thirdperson_lefthand": {
+ "rotation": [-180, 0, 0],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "firstperson_righthand": {
+ "rotation": [-180, 0, 0],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "firstperson_lefthand": {
+ "rotation": [-180, 0, 0],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "ground": {
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "gui": {
+ "rotation": [-19, -41, 0],
+ "scale": [0.6, 0.6, 0.6]
+ },
+ "fixed": {
+ "rotation": [0, -90, 0],
+ "scale": [0.09, 1, 1]
+ }
+ },
+ "groups": [
+ {
+ "name": "VoxelShapes",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [0, 1, 2, 3, 4, 5, 6]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Lava/src/main/resources/assets/lava/models/block/frame_slope_outer.json b/Lava/src/main/resources/assets/lava/models/block/frame_slope_outer.json
new file mode 100644
index 00000000..fa0c3771
--- /dev/null
+++ b/Lava/src/main/resources/assets/lava/models/block/frame_slope_outer.json
@@ -0,0 +1,118 @@
+{
+ "credit": "Made with Blockbench",
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "0": "lava:block/frame_block",
+ "2": "lava:block/frame_slope_front",
+ "3": "lava:block/frame_slope_side",
+ "particle": "lava:block/frame_block"
+ },
+ "elements": [
+ {
+ "name": "Front, north",
+ "from": [0, 0, 0],
+ "to": [16, 22.63, 0],
+ "rotation": {"angle": 45, "axis": "x", "origin": [0, 0, 0]},
+ "faces": {
+ "north": {"uv": [0, 0, 16, 16], "texture": "#2"},
+ "east": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "south": {"uv": [16, 0, 0, 16], "texture": "#2"},
+ "west": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "up": {"uv": [0, 0, 16, 0], "texture": "#missing"},
+ "down": {"uv": [0, 0, 16, 0], "texture": "#missing"}
+ }
+ },
+ {
+ "name": "Bottom",
+ "from": [0, 0.01, 0],
+ "to": [16, 0.01, 16],
+ "faces": {
+ "north": {"uv": [0, 0, 16, 0], "rotation": 180, "texture": "#missing"},
+ "east": {"uv": [0, 0, 0, 16], "rotation": 90, "texture": "#missing"},
+ "south": {"uv": [0, 0, 16, 0], "texture": "#missing"},
+ "west": {"uv": [0, 0, 0, 16], "rotation": 270, "texture": "#missing"},
+ "up": {"uv": [0, 0, 16, 16], "texture": "#0"},
+ "down": {"uv": [0, 0, 16, 16], "rotation": 180, "texture": "#0"}
+ }
+ },
+ {
+ "name": "Front, west",
+ "from": [0, 0, 0],
+ "to": [0, 22.63, 16],
+ "rotation": {"angle": -45, "axis": "z", "origin": [0, 0, 0]},
+ "faces": {
+ "north": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "east": {"uv": [0, 0, 16, 16], "texture": "#2"},
+ "south": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "west": {"uv": [16, 0, 0, 16], "texture": "#2"},
+ "up": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "down": {"uv": [0, 0, 0, 16], "texture": "#missing"}
+ }
+ },
+ {
+ "name": "Back, south",
+ "from": [0, 0, 16],
+ "to": [16, 16, 16],
+ "rotation": {"angle": 0, "axis": "y", "origin": [0, 0, 16]},
+ "faces": {
+ "north": {"uv": [0, 0, 16, 16], "texture": "#3"},
+ "east": {"uv": [0, 0, 0, 16], "texture": "#2"},
+ "south": {"uv": [16, 0, 0, 16], "texture": "#3"},
+ "west": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "up": {"uv": [0, 0, 16, 0], "texture": "#missing"},
+ "down": {"uv": [0, 0, 16, 0], "texture": "#missing"}
+ }
+ },
+ {
+ "name": "Back, east",
+ "from": [16, 0, 0],
+ "to": [16, 16, 16],
+ "rotation": {"angle": 0, "axis": "y", "origin": [16, 0, 0]},
+ "faces": {
+ "north": {"uv": [0, 0, 0, 16], "texture": "#missing"},
+ "east": {"uv": [0, 0, 16, 16], "texture": "#3"},
+ "south": {"uv": [0, 0, 0, 16], "texture": "#2"},
+ "west": {"uv": [16, 0, 0, 16], "texture": "#3"},
+ "up": {"uv": [0, 0, 16, 0], "rotation": 90, "texture": "#missing"},
+ "down": {"uv": [0, 0, 16, 0], "rotation": 270, "texture": "#missing"}
+ }
+ }
+ ],
+ "display": {
+ "thirdperson_righthand": {
+ "rotation": [-180, 1, 0],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "thirdperson_lefthand": {
+ "rotation": [-180, 0, 0],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "firstperson_righthand": {
+ "rotation": [-180, 0, 0],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "firstperson_lefthand": {
+ "rotation": [-180, 0, 0],
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "ground": {
+ "scale": [0.3, 0.3, 0.3]
+ },
+ "gui": {
+ "rotation": [-19, -41, 0],
+ "scale": [0.6, 0.6, 0.6]
+ },
+ "fixed": {
+ "rotation": [0, -90, 0],
+ "scale": [0.09, 1, 1]
+ }
+ },
+ "groups": [
+ {
+ "name": "VoxelShapes",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [0, 1, 2, 3, 4]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Lava/src/main/resources/assets/lava/models/block/frame_stairs.json b/Lava/src/main/resources/assets/lava/models/block/frame_stairs.json
new file mode 100644
index 00000000..269a2719
--- /dev/null
+++ b/Lava/src/main/resources/assets/lava/models/block/frame_stairs.json
@@ -0,0 +1,64 @@
+{
+ "credit": "Made with Blockbench",
+ "textures": {
+ "1": "lava:block/frame_block_stair_side",
+ "3": "lava:block/frame_block",
+ "particle": "lava:block/frame_block"
+ },
+ "elements": [
+ {
+ "from": [8, 8, 0],
+ "to": [16, 16, 16],
+ "faces": {
+ "north": {"uv": [0, 8, 8, 16], "rotation": 90, "texture": "#1", "cullface": "north"},
+ "east": {"uv": [0, 0, 16, 8], "texture": "#3", "cullface": "east"},
+ "south": {"uv": [8, 8, 16, 16], "rotation": 270, "texture": "#1", "cullface": "south"},
+ "west": {"uv": [16, 8, 0, 0], "rotation": 180, "texture": "#3"},
+ "up": {"uv": [0, 8, 16, 16], "rotation": 270, "texture": "#1", "cullface": "up"}
+ }
+ },
+ {
+ "from": [8, 0, 0],
+ "to": [16, 8, 16],
+ "faces": {
+ "north": {"uv": [0, 8, 8, 16], "texture": "#3", "cullface": "north"},
+ "east": {"uv": [0, 8, 16, 16], "texture": "#3", "cullface": "east"},
+ "south": {"uv": [8, 8, 16, 16], "texture": "#3", "cullface": "south"},
+ "down": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#3", "cullface": "down"}
+ }
+ },
+ {
+ "from": [0, 0, 0],
+ "to": [8, 8, 16],
+ "faces": {
+ "north": {"uv": [8, 8, 16, 16], "texture": "#1", "cullface": "north"},
+ "south": {"uv": [0, 8, 8, 16], "texture": "#1", "cullface": "south"},
+ "west": {"uv": [0, 8, 16, 16], "texture": "#1", "cullface": "west"},
+ "up": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#3"},
+ "down": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#3", "cullface": "down"}
+ }
+ }
+ ],
+ "display": {
+ "thirdperson_lefthand": {
+ "rotation": [75, -135, 0],
+ "translation": [0, 2.5, 0],
+ "scale": [0.375, 0.375, 0.375]
+ },
+ "gui": {
+ "rotation": [30, 135, 0],
+ "scale": [0.625, 0.625, 0.625]
+ },
+ "head": {
+ "rotation": [0, -90, 0]
+ }
+ },
+ "groups": [
+ {
+ "name": "VoxelShapes",
+ "origin": [8, 8, 8],
+ "color": 0,
+ "children": [0, 1, 2]
+ }
+ ]
+}
\ No newline at end of file
diff --git a/Lava/src/main/resources/assets/lava/models/block/frame_stairs_inner.json b/Lava/src/main/resources/assets/lava/models/block/frame_stairs_inner.json
new file mode 100644
index 00000000..a98d9ebe
--- /dev/null
+++ b/Lava/src/main/resources/assets/lava/models/block/frame_stairs_inner.json
@@ -0,0 +1,83 @@
+{
+ "credit": "Made with Blockbench",
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "1": "lava:block/frame_block_stair_side",
+ "3": "lava:block/frame_block",
+ "particle": "lava:block/frame_block_stair_side"
+ },
+ "elements": [
+ {
+ "from": [0, 0, 0],
+ "to": [8, 8, 8],
+ "faces": {
+ "north": {"uv": [8, 8, 16, 16], "texture": "#1", "cullface": "north"},
+ "west": {"uv": [0, 8, 8, 16], "texture": "#1", "cullface": "west"},
+ "up": {"uv": [0, 8, 8, 16], "rotation": 90, "texture": "#3"},
+ "down": {"uv": [8, 8, 16, 16], "rotation": 90, "texture": "#3", "cullface": "down"}
+ }
+ },
+ {
+ "from": [0, 0, 8],
+ "to": [8, 8, 16],
+ "faces": {
+ "south": {"uv": [0, 8, 8, 16], "texture": "#3", "cullface": "south"},
+ "west": {"uv": [8, 8, 16, 16], "texture": "#3", "cullface": "west"},
+ "down": {"uv": [0, 8, 8, 16], "rotation": 90, "texture": "#3", "cullface": "down"}
+ }
+ },
+ {
+ "from": [8, 0, 0],
+ "to": [16, 8, 16],
+ "faces": {
+ "north": {"uv": [0, 8, 8, 16], "texture": "#3", "cullface": "north"},
+ "east": {"uv": [0, 8, 16, 16], "texture": "#3", "cullface": "east"},
+ "south": {"uv": [8, 8, 16, 16], "texture": "#3", "cullface": "south"},
+ "down": {"uv": [0, 0, 16, 8], "rotation": 90, "texture": "#3", "cullface": "down"}
+ }
+ },
+ {
+ "from": [8, 8, 0],
+ "to": [16, 16, 8],
+ "faces": {
+ "north": {"uv": [0, 8, 8, 16], "rotation": 90, "texture": "#1", "cullface": "north"},
+ "east": {"uv": [8, 0, 16, 8], "texture": "#3", "cullface": "east"},
+ "west": {"uv": [8, 8, 0, 0], "rotation": 180, "texture": "#3"},
+ "up": {"uv": [8, 8, 16, 16], "rotation": 270, "texture": "#1", "cullface": "up"}
+ }
+ },
+ {
+ "from": [8, 8, 8],
+ "to": [16, 16, 16],
+ "faces": {
+ "east": {"uv": [0, 0, 8, 8], "texture": "#3", "cullface": "east"},
+ "south": {"uv": [8, 8, 16, 16], "rotation": 270, "texture": "#3", "cullface": "south"},
+ "up": {"uv": [0, 8, 8, 16], "rotation": 270, "texture": "#3", "cullface": "up"}
+ }
+ },
+ {
+ "from": [0, 8, 8],
+ "to": [8, 16, 16],
+ "faces": {
+ "north": {"uv": [0, 0, 8, 8], "rotation": 90, "texture": "#3", "cullface": "north"},
+ "south": {"uv": [8, 0, 16, 8], "rotation": 270, "texture": "#3", "cullface": "south"},
+ "west": {"uv": [16, 8, 8, 0], "rotation": 180, "texture": "#3"},
+ "up": {"uv": [16, 8, 8, 16], "texture": "#1", "cullface": "up"}
+ }
+ }
+ ],
+ "display": {
+ "thirdperson_lefthand": {
+ "rotation": [75, -135, 0],
+ "translation": [0, 2.5, 0],
+ "scale": [0.375, 0.375, 0.375]
+ },
+ "gui": {
+ "rotation": [30, 135, 0],
+ "scale": [0.625, 0.625, 0.625]
+ },
+ "head": {
+ "rotation": [0, -90, 0]
+ }
+ }
+}
\ No newline at end of file
diff --git a/Lava/src/main/resources/assets/lava/models/block/frame_stairs_outer.json b/Lava/src/main/resources/assets/lava/models/block/frame_stairs_outer.json
new file mode 100644
index 00000000..32ce33f1
--- /dev/null
+++ b/Lava/src/main/resources/assets/lava/models/block/frame_stairs_outer.json
@@ -0,0 +1,67 @@
+{
+ "credit": "Made with Blockbench",
+ "parent": "minecraft:block/cube_all",
+ "textures": {
+ "1": "lava:block/frame_block_stair_side",
+ "2": "lava:block/frame_block_stair_top",
+ "3": "lava:block/frame_block",
+ "particle": "lava:block/frame_block_stair_side"
+ },
+ "elements": [
+ {
+ "from": [0, 0, 0],
+ "to": [8, 8, 16],
+ "faces": {
+ "north": {"uv": [8, 8, 16, 16], "texture": "#1", "cullface": "north"},
+ "south": {"uv": [0, 8, 8, 16], "texture": "#1", "cullface": "south"},
+ "west": {"uv": [0, 8, 16, 16], "texture": "#1", "cullface": "west"},
+ "up": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#3"},
+ "down": {"uv": [0, 8, 16, 16], "rotation": 90, "texture": "#3", "cullface": "down"}
+ }
+ },
+ {
+ "from": [8, 0, 0],
+ "to": [16, 8, 8],
+ "faces": {
+ "north": {"uv": [0, 8, 8, 16], "texture": "#3", "cullface": "north"},
+ "east": {"uv": [8, 8, 16, 16], "texture": "#3", "cullface": "east"},
+ "down": {"uv": [8, 0, 16, 8], "rotation": 90, "texture": "#3", "cullface": "down"}
+ }
+ },
+ {
+ "from": [8, 8, 0],
+ "to": [16, 16, 8],
+ "faces": {
+ "north": {"uv": [0, 8, 8, 16], "rotation": 90, "texture": "#1", "cullface": "north"},
+ "east": {"uv": [8, 8, 16, 16], "rotation": 270, "texture": "#1", "cullface": "east"},
+ "south": {"uv": [8, 8, 16, 16], "rotation": 270, "texture": "#1", "cullface": "south"},
+ "west": {"uv": [8, 16, 0, 8], "rotation": 270, "texture": "#1"},
+ "up": {"uv": [8, 8, 0, 16], "rotation": 270, "texture": "#2", "cullface": "up"}
+ }
+ },
+ {
+ "from": [8, 0, 8],
+ "to": [16, 8, 16],
+ "faces": {
+ "east": {"uv": [0, 8, 8, 16], "texture": "#1", "cullface": "up"},
+ "south": {"uv": [8, 8, 16, 16], "texture": "#1", "cullface": "south"},
+ "up": {"uv": [16, 8, 8, 0], "rotation": 270, "texture": "#3"},
+ "down": {"uv": [0, 0, 8, 8], "rotation": 90, "texture": "#3", "cullface": "east"}
+ }
+ }
+ ],
+ "display": {
+ "thirdperson_lefthand": {
+ "rotation": [75, -135, 0],
+ "translation": [0, 2.5, 0],
+ "scale": [0.375, 0.375, 0.375]
+ },
+ "gui": {
+ "rotation": [30, 135, 0],
+ "scale": [0.625, 0.625, 0.625]
+ },
+ "head": {
+ "rotation": [0, -90, 0]
+ }
+ }
+}
\ No newline at end of file
diff --git a/Lava/src/main/resources/assets/lava/models/item/frame_slab.json b/Lava/src/main/resources/assets/lava/models/item/frame_slab.json
new file mode 100644
index 00000000..42762aea
--- /dev/null
+++ b/Lava/src/main/resources/assets/lava/models/item/frame_slab.json
@@ -0,0 +1,3 @@
+{
+ "parent": "lava:block/frame_slab"
+}
\ No newline at end of file
diff --git a/Lava/src/main/resources/assets/lava/models/item/frame_stairs.json b/Lava/src/main/resources/assets/lava/models/item/frame_stairs.json
new file mode 100644
index 00000000..5fcad228
--- /dev/null
+++ b/Lava/src/main/resources/assets/lava/models/item/frame_stairs.json
@@ -0,0 +1,3 @@
+{
+ "parent": "lava:block/frame_stairs"
+}
\ No newline at end of file
diff --git a/Lava/src/main/resources/assets/lava/textures/block/frame_block.png b/Lava/src/main/resources/assets/lava/textures/block/frame_block.png
index 78e57df3..6a57f977 100644
Binary files a/Lava/src/main/resources/assets/lava/textures/block/frame_block.png and b/Lava/src/main/resources/assets/lava/textures/block/frame_block.png differ
diff --git a/Lava/src/main/resources/assets/lava/textures/block/frame_block_stair_side.png b/Lava/src/main/resources/assets/lava/textures/block/frame_block_stair_side.png
new file mode 100644
index 00000000..5dc1772a
Binary files /dev/null and b/Lava/src/main/resources/assets/lava/textures/block/frame_block_stair_side.png differ
diff --git a/Lava/src/main/resources/assets/lava/textures/block/frame_block_stair_top.png b/Lava/src/main/resources/assets/lava/textures/block/frame_block_stair_top.png
new file mode 100644
index 00000000..75987967
Binary files /dev/null and b/Lava/src/main/resources/assets/lava/textures/block/frame_block_stair_top.png differ
diff --git a/Lava/src/main/resources/assets/lava/textures/block/frame_slope_front.png b/Lava/src/main/resources/assets/lava/textures/block/frame_slope_front.png
new file mode 100644
index 00000000..c0b99d6b
Binary files /dev/null and b/Lava/src/main/resources/assets/lava/textures/block/frame_slope_front.png differ
diff --git a/Lava/src/main/resources/assets/lava/textures/block/frame_slope_side.png b/Lava/src/main/resources/assets/lava/textures/block/frame_slope_side.png
new file mode 100644
index 00000000..803da17d
Binary files /dev/null and b/Lava/src/main/resources/assets/lava/textures/block/frame_slope_side.png differ
diff --git a/README.md b/README.md
index c6a6a66d..9c140c41 100644
--- a/README.md
+++ b/README.md
@@ -38,7 +38,6 @@ Omtentavecka
### Week 22
-
## What we have done
## Will do
@@ -46,12 +45,12 @@ Omtentavecka
- [x] Add at least one new block
- [x] Add at least one new crafting recipe
- [x] Add a block that changes texture depending on another block placed in it
-- [ ] Add a slab of that block
+- [x] Add a slab of that block
## Want to do
- [x] Add different shapes
-- [ ] Add ability to waterlog the different shapes
+- [x] Add ability to waterlog the different shapes
- [ ] Add a custom generated biome
- [ ] Add a custom generated tree
- [ ] Add a custom liquid