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