diff --git a/MapLoader.NUnitTests/textures/blocks/amethyst_block.png b/MapLoader.NUnitTests/textures/blocks/amethyst_block.png new file mode 100644 index 0000000..4e3e8b1 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/amethyst_block.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/amethyst_cluster.png b/MapLoader.NUnitTests/textures/blocks/amethyst_cluster.png new file mode 100644 index 0000000..c928f20 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/amethyst_cluster.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/azalea_leaves.png b/MapLoader.NUnitTests/textures/blocks/azalea_leaves.png new file mode 100644 index 0000000..7eff9b1 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/azalea_leaves.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/azalea_leaves_flowers.png b/MapLoader.NUnitTests/textures/blocks/azalea_leaves_flowers.png new file mode 100644 index 0000000..2de12a3 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/azalea_leaves_flowers.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/azalea_leaves_flowers_opaque.png b/MapLoader.NUnitTests/textures/blocks/azalea_leaves_flowers_opaque.png new file mode 100644 index 0000000..3f68432 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/azalea_leaves_flowers_opaque.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/azalea_leaves_opaque.png b/MapLoader.NUnitTests/textures/blocks/azalea_leaves_opaque.png new file mode 100644 index 0000000..d3c0a84 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/azalea_leaves_opaque.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/azalea_plant.png b/MapLoader.NUnitTests/textures/blocks/azalea_plant.png new file mode 100644 index 0000000..74d5a97 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/azalea_plant.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/azalea_side.png b/MapLoader.NUnitTests/textures/blocks/azalea_side.png new file mode 100644 index 0000000..43b8ec0 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/azalea_side.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/azalea_top.png b/MapLoader.NUnitTests/textures/blocks/azalea_top.png new file mode 100644 index 0000000..0449fb0 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/azalea_top.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/big_dripleaf_side1.png b/MapLoader.NUnitTests/textures/blocks/big_dripleaf_side1.png new file mode 100644 index 0000000..f596e32 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/big_dripleaf_side1.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/big_dripleaf_side2.png b/MapLoader.NUnitTests/textures/blocks/big_dripleaf_side2.png new file mode 100644 index 0000000..5f42e9a Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/big_dripleaf_side2.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/big_dripleaf_stem.png b/MapLoader.NUnitTests/textures/blocks/big_dripleaf_stem.png new file mode 100644 index 0000000..56b1aee Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/big_dripleaf_stem.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/big_dripleaf_top.png b/MapLoader.NUnitTests/textures/blocks/big_dripleaf_top.png new file mode 100644 index 0000000..f697484 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/big_dripleaf_top.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/blackstone.png b/MapLoader.NUnitTests/textures/blocks/blackstone.png index bbfdb4d..5f94c21 100644 Binary files a/MapLoader.NUnitTests/textures/blocks/blackstone.png and b/MapLoader.NUnitTests/textures/blocks/blackstone.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/budding_amethyst.png b/MapLoader.NUnitTests/textures/blocks/budding_amethyst.png new file mode 100644 index 0000000..edde805 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/budding_amethyst.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/calcite.png b/MapLoader.NUnitTests/textures/blocks/calcite.png new file mode 100644 index 0000000..4c2b0dd Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/calcite.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/cave_vines_body.png b/MapLoader.NUnitTests/textures/blocks/cave_vines_body.png new file mode 100644 index 0000000..8a49030 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/cave_vines_body.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/cave_vines_body_berries.png b/MapLoader.NUnitTests/textures/blocks/cave_vines_body_berries.png new file mode 100644 index 0000000..4a9b807 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/cave_vines_body_berries.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/cave_vines_head.png b/MapLoader.NUnitTests/textures/blocks/cave_vines_head.png new file mode 100644 index 0000000..7120939 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/cave_vines_head.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/cave_vines_head_berries.png b/MapLoader.NUnitTests/textures/blocks/cave_vines_head_berries.png new file mode 100644 index 0000000..1c8de2a Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/cave_vines_head_berries.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/coal_ore.png b/MapLoader.NUnitTests/textures/blocks/coal_ore.png index c5250f0..2a21d2b 100644 Binary files a/MapLoader.NUnitTests/textures/blocks/coal_ore.png and b/MapLoader.NUnitTests/textures/blocks/coal_ore.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/copper_block.png b/MapLoader.NUnitTests/textures/blocks/copper_block.png new file mode 100644 index 0000000..f7ce8b4 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/copper_block.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/copper_ore.png b/MapLoader.NUnitTests/textures/blocks/copper_ore.png new file mode 100644 index 0000000..c7aea0c Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/copper_ore.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/cut_copper.png b/MapLoader.NUnitTests/textures/blocks/cut_copper.png new file mode 100644 index 0000000..cdb7f23 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/cut_copper.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/deepslate/chiseled_deepslate.png b/MapLoader.NUnitTests/textures/blocks/deepslate/chiseled_deepslate.png new file mode 100644 index 0000000..b8a7014 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/deepslate/chiseled_deepslate.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/deepslate/cobbled_deepslate.png b/MapLoader.NUnitTests/textures/blocks/deepslate/cobbled_deepslate.png new file mode 100644 index 0000000..50fe34e Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/deepslate/cobbled_deepslate.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/deepslate/cracked_deepslate_bricks.png b/MapLoader.NUnitTests/textures/blocks/deepslate/cracked_deepslate_bricks.png new file mode 100644 index 0000000..7f8f833 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/deepslate/cracked_deepslate_bricks.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/deepslate/cracked_deepslate_tiles.png b/MapLoader.NUnitTests/textures/blocks/deepslate/cracked_deepslate_tiles.png new file mode 100644 index 0000000..b17d116 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/deepslate/cracked_deepslate_tiles.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate.png b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate.png new file mode 100644 index 0000000..b07b09d Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_bricks.png b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_bricks.png new file mode 100644 index 0000000..2cf2a17 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_bricks.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_coal_ore.png b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_coal_ore.png new file mode 100644 index 0000000..3b9768c Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_coal_ore.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_copper_ore.png b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_copper_ore.png new file mode 100644 index 0000000..6dc547d Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_copper_ore.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_diamond_ore.png b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_diamond_ore.png new file mode 100644 index 0000000..86772d0 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_diamond_ore.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_emerald_ore.png b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_emerald_ore.png new file mode 100644 index 0000000..31720fd Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_emerald_ore.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_gold_ore.png b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_gold_ore.png new file mode 100644 index 0000000..be52acb Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_gold_ore.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_iron_ore.png b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_iron_ore.png new file mode 100644 index 0000000..96c170e Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_iron_ore.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_lapis_ore.png b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_lapis_ore.png new file mode 100644 index 0000000..0e9c8cc Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_lapis_ore.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_redstone_ore.png b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_redstone_ore.png new file mode 100644 index 0000000..6a1419a Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_redstone_ore.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_tiles.png b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_tiles.png new file mode 100644 index 0000000..7eebeb6 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_tiles.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_top.png b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_top.png new file mode 100644 index 0000000..2569e50 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/deepslate/deepslate_top.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/deepslate/polished_deepslate.png b/MapLoader.NUnitTests/textures/blocks/deepslate/polished_deepslate.png new file mode 100644 index 0000000..dfcf750 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/deepslate/polished_deepslate.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/diamond_ore.png b/MapLoader.NUnitTests/textures/blocks/diamond_ore.png index bd8b4bc..5182e1c 100644 Binary files a/MapLoader.NUnitTests/textures/blocks/diamond_ore.png and b/MapLoader.NUnitTests/textures/blocks/diamond_ore.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/dirt_with_roots.png b/MapLoader.NUnitTests/textures/blocks/dirt_with_roots.png new file mode 100644 index 0000000..b28f0a3 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/dirt_with_roots.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/dripstone_block.png b/MapLoader.NUnitTests/textures/blocks/dripstone_block.png new file mode 100644 index 0000000..c3fbb5b Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/dripstone_block.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/emerald_ore.png b/MapLoader.NUnitTests/textures/blocks/emerald_ore.png index ae4c835..425191c 100644 Binary files a/MapLoader.NUnitTests/textures/blocks/emerald_ore.png and b/MapLoader.NUnitTests/textures/blocks/emerald_ore.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/exposed_copper.png b/MapLoader.NUnitTests/textures/blocks/exposed_copper.png new file mode 100644 index 0000000..d265f4b Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/exposed_copper.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/exposed_cut_copper.png b/MapLoader.NUnitTests/textures/blocks/exposed_cut_copper.png new file mode 100644 index 0000000..b8d527c Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/exposed_cut_copper.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/flowering_azalea_side.png b/MapLoader.NUnitTests/textures/blocks/flowering_azalea_side.png new file mode 100644 index 0000000..c61e516 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/flowering_azalea_side.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/flowering_azalea_top.png b/MapLoader.NUnitTests/textures/blocks/flowering_azalea_top.png new file mode 100644 index 0000000..921bb8f Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/flowering_azalea_top.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/gilded_blackstone.png b/MapLoader.NUnitTests/textures/blocks/gilded_blackstone.png index 6764425..db5c616 100644 Binary files a/MapLoader.NUnitTests/textures/blocks/gilded_blackstone.png and b/MapLoader.NUnitTests/textures/blocks/gilded_blackstone.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/glow_item_frame.png b/MapLoader.NUnitTests/textures/blocks/glow_item_frame.png new file mode 100644 index 0000000..633e567 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/glow_item_frame.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/glow_lichen.png b/MapLoader.NUnitTests/textures/blocks/glow_lichen.png new file mode 100644 index 0000000..d6fd870 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/glow_lichen.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/gold_ore.png b/MapLoader.NUnitTests/textures/blocks/gold_ore.png index 9a96501..cb1c9cc 100644 Binary files a/MapLoader.NUnitTests/textures/blocks/gold_ore.png and b/MapLoader.NUnitTests/textures/blocks/gold_ore.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/grass_block_snow.png b/MapLoader.NUnitTests/textures/blocks/grass_block_snow.png new file mode 100644 index 0000000..5fe3e02 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/grass_block_snow.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/hanging_roots.png b/MapLoader.NUnitTests/textures/blocks/hanging_roots.png new file mode 100644 index 0000000..5aae89e Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/hanging_roots.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/iron_ore.png b/MapLoader.NUnitTests/textures/blocks/iron_ore.png index 6484177..8fa6857 100644 Binary files a/MapLoader.NUnitTests/textures/blocks/iron_ore.png and b/MapLoader.NUnitTests/textures/blocks/iron_ore.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/lapis_ore.png b/MapLoader.NUnitTests/textures/blocks/lapis_ore.png index 24ffcba..7c212c3 100644 Binary files a/MapLoader.NUnitTests/textures/blocks/lapis_ore.png and b/MapLoader.NUnitTests/textures/blocks/lapis_ore.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/large_amethyst_bud.png b/MapLoader.NUnitTests/textures/blocks/large_amethyst_bud.png new file mode 100644 index 0000000..337f13d Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/large_amethyst_bud.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/lightning_rod.png b/MapLoader.NUnitTests/textures/blocks/lightning_rod.png new file mode 100644 index 0000000..5c9a13d Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/lightning_rod.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/medium_amethyst_bud.png b/MapLoader.NUnitTests/textures/blocks/medium_amethyst_bud.png new file mode 100644 index 0000000..a0f84f0 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/medium_amethyst_bud.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/moss_block.png b/MapLoader.NUnitTests/textures/blocks/moss_block.png new file mode 100644 index 0000000..c949c37 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/moss_block.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/oxidized_copper.png b/MapLoader.NUnitTests/textures/blocks/oxidized_copper.png new file mode 100644 index 0000000..0ad69bc Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/oxidized_copper.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/oxidized_cut_copper.png b/MapLoader.NUnitTests/textures/blocks/oxidized_cut_copper.png new file mode 100644 index 0000000..7da2ce3 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/oxidized_cut_copper.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_down_base.png b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_down_base.png new file mode 100644 index 0000000..b3d97cb Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_down_base.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_down_frustum.png b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_down_frustum.png new file mode 100644 index 0000000..1cd4515 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_down_frustum.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_down_merge.png b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_down_merge.png new file mode 100644 index 0000000..38620f5 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_down_merge.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_down_middle.png b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_down_middle.png new file mode 100644 index 0000000..f49ffd3 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_down_middle.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_down_tip.png b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_down_tip.png new file mode 100644 index 0000000..91f73b3 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_down_tip.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_up_base.png b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_up_base.png new file mode 100644 index 0000000..86e7f40 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_up_base.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_up_frustum.png b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_up_frustum.png new file mode 100644 index 0000000..e90a9f4 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_up_frustum.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_up_merge.png b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_up_merge.png new file mode 100644 index 0000000..0cb03ad Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_up_merge.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_up_middle.png b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_up_middle.png new file mode 100644 index 0000000..eb66e9b Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_up_middle.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_up_tip.png b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_up_tip.png new file mode 100644 index 0000000..9c702a7 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/pointed_dripstone_up_tip.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/powder_snow.png b/MapLoader.NUnitTests/textures/blocks/powder_snow.png new file mode 100644 index 0000000..f6c2279 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/powder_snow.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/raw_copper_block.png b/MapLoader.NUnitTests/textures/blocks/raw_copper_block.png new file mode 100644 index 0000000..204a822 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/raw_copper_block.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/raw_gold_block.png b/MapLoader.NUnitTests/textures/blocks/raw_gold_block.png new file mode 100644 index 0000000..57472f7 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/raw_gold_block.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/raw_iron_block.png b/MapLoader.NUnitTests/textures/blocks/raw_iron_block.png new file mode 100644 index 0000000..e99a2b3 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/raw_iron_block.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/redstone_ore.png b/MapLoader.NUnitTests/textures/blocks/redstone_ore.png index c68c77c..b708697 100644 Binary files a/MapLoader.NUnitTests/textures/blocks/redstone_ore.png and b/MapLoader.NUnitTests/textures/blocks/redstone_ore.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/small_amethyst_bud.png b/MapLoader.NUnitTests/textures/blocks/small_amethyst_bud.png new file mode 100644 index 0000000..443c2d2 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/small_amethyst_bud.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/small_dripleaf_side.png b/MapLoader.NUnitTests/textures/blocks/small_dripleaf_side.png new file mode 100644 index 0000000..28b09da Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/small_dripleaf_side.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/small_dripleaf_stem_bottom.png b/MapLoader.NUnitTests/textures/blocks/small_dripleaf_stem_bottom.png new file mode 100644 index 0000000..5a3b9e6 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/small_dripleaf_stem_bottom.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/small_dripleaf_stem_top.png b/MapLoader.NUnitTests/textures/blocks/small_dripleaf_stem_top.png new file mode 100644 index 0000000..596a02c Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/small_dripleaf_stem_top.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/small_dripleaf_top.png b/MapLoader.NUnitTests/textures/blocks/small_dripleaf_top.png new file mode 100644 index 0000000..34efa1f Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/small_dripleaf_top.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/smoker_top.png b/MapLoader.NUnitTests/textures/blocks/smoker_top.png index 439b8c5..4b5e280 100644 Binary files a/MapLoader.NUnitTests/textures/blocks/smoker_top.png and b/MapLoader.NUnitTests/textures/blocks/smoker_top.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/smooth_basalt.png b/MapLoader.NUnitTests/textures/blocks/smooth_basalt.png new file mode 100644 index 0000000..56daac9 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/smooth_basalt.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/spore_blossom.png b/MapLoader.NUnitTests/textures/blocks/spore_blossom.png new file mode 100644 index 0000000..164bd29 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/spore_blossom.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/spore_blossom_base.png b/MapLoader.NUnitTests/textures/blocks/spore_blossom_base.png new file mode 100644 index 0000000..5edd86b Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/spore_blossom_base.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/tinted_glass.png b/MapLoader.NUnitTests/textures/blocks/tinted_glass.png new file mode 100644 index 0000000..cd1dd46 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/tinted_glass.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/tuff.png b/MapLoader.NUnitTests/textures/blocks/tuff.png new file mode 100644 index 0000000..0880433 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/tuff.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/weathered_copper.png b/MapLoader.NUnitTests/textures/blocks/weathered_copper.png new file mode 100644 index 0000000..10d24e1 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/weathered_copper.png differ diff --git a/MapLoader.NUnitTests/textures/blocks/weathered_cut_copper.png b/MapLoader.NUnitTests/textures/blocks/weathered_cut_copper.png new file mode 100644 index 0000000..8d9ed40 Binary files /dev/null and b/MapLoader.NUnitTests/textures/blocks/weathered_cut_copper.png differ diff --git a/MapLoader.NUnitTests/textures/terrain_texture.json b/MapLoader.NUnitTests/textures/terrain_texture.json index 5b11743..ff478bb 100644 --- a/MapLoader.NUnitTests/textures/terrain_texture.json +++ b/MapLoader.NUnitTests/textures/terrain_texture.json @@ -12,6 +12,12 @@ "acacia_trapdoor" : { "textures" : "textures/blocks/acacia_trapdoor" }, + "amethyst_block" : { + "textures" : "textures/blocks/amethyst_block" + }, + "amethyst_cluster" : { + "textures" : "textures/blocks/amethyst_cluster" + }, "ancient_debris_side" : { "textures" : "textures/blocks/ancient_debris_side" }, @@ -37,6 +43,27 @@ "textures/blocks/anvil_base" ] }, + "azalea_leaves" : { + "textures" : [ + "textures/blocks/azalea_leaves", + "textures/blocks/azalea_leaves_opaque" + ] + }, + "azalea_leaves_flowered" : { + "textures" : [ + "textures/blocks/azalea_leaves_flowers", + "textures/blocks/azalea_leaves_flowers_opaque" + ] + }, + "azalea_plant" : { + "textures" : "textures/blocks/azalea_plant" + }, + "azalea_side" : { + "textures" : "textures/blocks/azalea_side" + }, + "azalea_top" : { + "textures" : "textures/blocks/azalea_top" + }, "bamboo_carried" : { "textures" : "textures/items/bamboo" }, @@ -141,6 +168,18 @@ "bell_top" : { "textures" : "textures/blocks/bell_top" }, + "big_dripleaf_side1" : { + "textures" : "textures/blocks/big_dripleaf_side1" + }, + "big_dripleaf_side2" : { + "textures" : "textures/blocks/big_dripleaf_side2" + }, + "big_dripleaf_stem" : { + "textures" : "textures/blocks/big_dripleaf_stem" + }, + "big_dripleaf_top" : { + "textures" : "textures/blocks/big_dripleaf_top" + }, "birch_planks" : { "textures" : "textures/blocks/planks_birch" }, @@ -191,21 +230,12 @@ "textures/blocks/blast_furnace_top" ] }, - "soul_fire_0" : { - "textures" : "textures/blocks/soul_fire_0" - }, - "soul_fire_1" : { - "textures" : "textures/blocks/soul_fire_1" - }, "blue_glazed_terracotta" : { "textures" : "textures/blocks/glazed_terracotta_blue" }, "blue_ice" : { "textures" : "textures/blocks/blue_ice" }, - "warped_wart_block" : { - "textures" : [ "textures/blocks/warped_wart_block" ] - }, "bone_block_side" : { "textures" : "textures/blocks/bone_block_side" }, @@ -267,6 +297,9 @@ "textures/blocks/bubble_column_up_top_d" ] }, + "budding_amethyst" : { + "textures" : "textures/blocks/budding_amethyst" + }, "build_allow" : { "textures" : "textures/blocks/build_allow" }, @@ -294,6 +327,9 @@ "cake_west" : { "textures" : [ "textures/blocks/cake_side", "textures/blocks/cake_inner" ] }, + "calcite" : { + "textures" : "textures/blocks/calcite" + }, "camera_back" : { "textures" : "textures/blocks/camera_back" }, @@ -353,6 +389,18 @@ "cauldron_water" : { "textures" : "textures/blocks/cauldron_water" }, + "cave_vines_body" : { + "textures" : [ + "textures/blocks/cave_vines_body", + "textures/blocks/cave_vines_body_berries" + ] + }, + "cave_vines_head" : { + "textures" : [ + "textures/blocks/cave_vines_head", + "textures/blocks/cave_vines_head_berries" + ] + }, "chain1" : { "textures" : "textures/blocks/chain1" }, @@ -375,6 +423,9 @@ "chest_inventory_top" : { "textures" : [ "textures/blocks/chest_top" ] }, + "chiseled_deepslate" : { + "textures" : "textures/blocks/deepslate/chiseled_deepslate" + }, "chiseled_nether_bricks" : { "textures" : "textures/blocks/chiseled_nether_bricks" }, @@ -396,6 +447,9 @@ "coal_ore" : { "textures" : "textures/blocks/coal_ore" }, + "cobbled_deepslate" : { + "textures" : "textures/blocks/deepslate/cobbled_deepslate" + }, "cobblestone" : { "textures" : "textures/blocks/cobblestone" }, @@ -534,6 +588,12 @@ "conduit" : { "textures" : "textures/blocks/conduit_base" }, + "copper_block" : { + "textures" : "textures/blocks/copper_block" + }, + "copper_ore" : { + "textures" : "textures/blocks/copper_ore" + }, "coral" : { "textures" : [ "textures/blocks/coral_plant_blue", @@ -604,6 +664,12 @@ "textures/blocks/coral_fan_yellow_dead" ] }, + "cracked_deepslate_bricks" : { + "textures" : "textures/blocks/deepslate/cracked_deepslate_bricks" + }, + "cracked_deepslate_tiles" : { + "textures" : "textures/blocks/deepslate/cracked_deepslate_tiles" + }, "cracked_nether_bricks" : { "textures" : "textures/blocks/cracked_nether_bricks" }, @@ -658,6 +724,9 @@ "crying_obsidian" : { "textures" : "textures/blocks/crying_obsidian" }, + "cut_copper" : { + "textures" : "textures/blocks/cut_copper" + }, "cyan_glazed_terracotta" : { "textures" : "textures/blocks/glazed_terracotta_cyan" }, @@ -688,6 +757,42 @@ "deadbush" : { "textures" : "textures/blocks/deadbush" }, + "deepslate" : { + "textures" : "textures/blocks/deepslate/deepslate" + }, + "deepslate_bricks" : { + "textures" : "textures/blocks/deepslate/deepslate_bricks" + }, + "deepslate_coal_ore" : { + "textures" : "textures/blocks/deepslate/deepslate_coal_ore" + }, + "deepslate_copper_ore" : { + "textures" : "textures/blocks/deepslate/deepslate_copper_ore" + }, + "deepslate_diamond_ore" : { + "textures" : "textures/blocks/deepslate/deepslate_diamond_ore" + }, + "deepslate_emerald_ore" : { + "textures" : "textures/blocks/deepslate/deepslate_emerald_ore" + }, + "deepslate_gold_ore" : { + "textures" : "textures/blocks/deepslate/deepslate_gold_ore" + }, + "deepslate_iron_ore" : { + "textures" : "textures/blocks/deepslate/deepslate_iron_ore" + }, + "deepslate_lapis_ore" : { + "textures" : "textures/blocks/deepslate/deepslate_lapis_ore" + }, + "deepslate_redstone_ore" : { + "textures" : "textures/blocks/deepslate/deepslate_redstone_ore" + }, + "deepslate_tiles" : { + "textures" : "textures/blocks/deepslate/deepslate_tiles" + }, + "deepslate_top" : { + "textures" : "textures/blocks/deepslate/deepslate_top" + }, "destroy" : { "textures" : [ "textures/environment/destroy_stage_0", @@ -723,6 +828,9 @@ "dirt_podzol_top" : { "textures" : "textures/blocks/dirt_podzol_top" }, + "dirt_with_roots" : { + "textures" : "textures/blocks/dirt_with_roots" + }, "dispenser_front_horizontal" : { "textures" : "textures/blocks/dispenser_front_horizontal" }, @@ -799,6 +907,9 @@ "dried_kelp_block_top" : { "textures" : "textures/blocks/dried_kelp_top" }, + "dripstone_block" : { + "textures" : "textures/blocks/dripstone_block" + }, "dropper_front_horizontal" : { "textures" : "textures/blocks/dropper_front_horizontal" }, @@ -862,6 +973,12 @@ "endframe_top" : { "textures" : "textures/blocks/endframe_top" }, + "exposed_copper" : { + "textures" : "textures/blocks/exposed_copper" + }, + "exposed_cut_copper" : { + "textures" : "textures/blocks/exposed_cut_copper" + }, "farmland" : { "textures" : [ "textures/blocks/farmland_wet", "textures/blocks/farmland_dry" ] }, @@ -886,6 +1003,12 @@ "flower_pot" : { "textures" : "textures/blocks/flower_pot" }, + "flowering_azalea_side" : { + "textures" : "textures/blocks/flowering_azalea_side" + }, + "flowering_azalea_top" : { + "textures" : "textures/blocks/flowering_azalea_top" + }, "flowing_lava" : { "quad" : 1, "textures" : "textures/blocks/lava_flow" @@ -941,6 +1064,12 @@ "glass_pane_top" : { "textures" : "textures/blocks/glass_pane_top" }, + "glow_item_frame" : { + "textures" : "textures/blocks/glow_item_frame" + }, + "glow_lichen" : { + "textures" : "textures/blocks/glow_lichen" + }, "glowing_obsidian" : { "textures" : "textures/blocks/glowing_obsidian" }, @@ -1106,6 +1235,9 @@ "grindstone_side" : { "textures" : "textures/blocks/grindstone_side" }, + "hanging_roots" : { + "textures" : "textures/blocks/hanging_roots" + }, "hardened_clay" : { "textures" : "textures/blocks/hardened_clay" }, @@ -1220,6 +1352,9 @@ "lapis_ore" : { "textures" : "textures/blocks/lapis_ore" }, + "large_amethyst_bud" : { + "textures" : "textures/blocks/large_amethyst_bud" + }, "leaves" : { "textures" : [ "textures/blocks/leaves_oak", @@ -1304,6 +1439,9 @@ "light_blue_glazed_terracotta" : { "textures" : "textures/blocks/glazed_terracotta_light_blue" }, + "lightning_rod" : { + "textures" : "textures/blocks/lightning_rod" + }, "lime_glazed_terracotta" : { "textures" : "textures/blocks/glazed_terracotta_lime" }, @@ -1361,6 +1499,9 @@ "magma" : { "textures" : "textures/blocks/magma" }, + "medium_amethyst_bud" : { + "textures" : "textures/blocks/medium_amethyst_bud" + }, "melon_side" : { "textures" : "textures/blocks/melon_side" }, @@ -1392,6 +1533,9 @@ "textures/blocks/stone" ] }, + "moss_block" : { + "textures" : "textures/blocks/moss_block" + }, "mossy_stone_brick" : { "textures" : "textures/blocks/stonebrick_mossy" }, @@ -1717,6 +1861,12 @@ "orange_glazed_terracotta" : { "textures" : "textures/blocks/glazed_terracotta_orange" }, + "oxidized_copper" : { + "textures" : "textures/blocks/oxidized_copper" + }, + "oxidized_cut_copper" : { + "textures" : "textures/blocks/oxidized_cut_copper" + }, "pink_glazed_terracotta" : { "textures" : "textures/blocks/glazed_terracotta_pink" }, @@ -1745,6 +1895,36 @@ "textures/blocks/planks_big_oak" ] }, + "pointed_dripstone_base" : { + "textures" : [ + "textures/blocks/pointed_dripstone_down_base", + "textures/blocks/pointed_dripstone_up_base" + ] + }, + "pointed_dripstone_frustum" : { + "textures" : [ + "textures/blocks/pointed_dripstone_down_frustum", + "textures/blocks/pointed_dripstone_up_frustum" + ] + }, + "pointed_dripstone_merge" : { + "textures" : [ + "textures/blocks/pointed_dripstone_down_merge", + "textures/blocks/pointed_dripstone_up_merge" + ] + }, + "pointed_dripstone_middle" : { + "textures" : [ + "textures/blocks/pointed_dripstone_down_middle", + "textures/blocks/pointed_dripstone_up_middle" + ] + }, + "pointed_dripstone_tip" : { + "textures" : [ + "textures/blocks/pointed_dripstone_down_tip", + "textures/blocks/pointed_dripstone_up_tip" + ] + }, "polished_andesite" : { "textures" : "textures/blocks/stone_andesite_smooth" }, @@ -1760,6 +1940,9 @@ "polished_blackstone_bricks" : { "textures" : "textures/blocks/polished_blackstone_bricks" }, + "polished_deepslate" : { + "textures" : "textures/blocks/deepslate/polished_deepslate" + }, "polished_diorite" : { "textures" : "textures/blocks/stone_diorite_smooth" }, @@ -1777,6 +1960,9 @@ "textures/blocks/potatoes_stage_3" ] }, + "powder_snow" : { + "textures" : "textures/blocks/powder_snow" + }, "prismarine" : { "textures" : [ "textures/blocks/prismarine_rough", @@ -1892,6 +2078,15 @@ "rail_normal_turned" : { "textures" : "textures/blocks/rail_normal_turned" }, + "raw_copper_block" : { + "textures" : "textures/blocks/raw_copper_block" + }, + "raw_gold_block" : { + "textures" : "textures/blocks/raw_gold_block" + }, + "raw_iron_block" : { + "textures" : "textures/blocks/raw_iron_block" + }, "reactor_core" : { "textures" : [ "textures/blocks/reactor_core_stage_0", @@ -2122,6 +2317,21 @@ "slime_block" : { "textures" : "textures/blocks/slime" }, + "small_amethyst_bud" : { + "textures" : "textures/blocks/small_amethyst_bud" + }, + "small_dripleaf_side" : { + "textures" : "textures/blocks/small_dripleaf_side" + }, + "small_dripleaf_stem_bottom" : { + "textures" : "textures/blocks/small_dripleaf_stem_bottom" + }, + "small_dripleaf_stem_top" : { + "textures" : "textures/blocks/small_dripleaf_stem_top" + }, + "small_dripleaf_top" : { + "textures" : "textures/blocks/small_dripleaf_top" + }, "smithing_table_bottom" : { "textures" : "textures/blocks/smithing_table_bottom" }, @@ -2157,6 +2367,9 @@ "smoker_top" : { "textures" : [ "textures/blocks/smoker_top", "textures/blocks/smoker_top" ] }, + "smooth_basalt" : { + "textures" : "textures/blocks/smooth_basalt" + }, "smooth_red_sandstone" : { "textures" : "textures/blocks/red_sandstone_top" }, @@ -2175,6 +2388,12 @@ "soul_campfire_log_lit" : { "textures" : "textures/blocks/soul_campfire_log_lit" }, + "soul_fire_0" : { + "textures" : "textures/blocks/soul_fire_0" + }, + "soul_fire_1" : { + "textures" : "textures/blocks/soul_fire_1" + }, "soul_lantern" : { "textures" : "textures/blocks/soul_lantern" }, @@ -2193,6 +2412,12 @@ "sponge" : { "textures" : [ "textures/blocks/sponge", "textures/blocks/sponge_wet" ] }, + "spore_blossom" : { + "textures" : "textures/blocks/spore_blossom" + }, + "spore_blossom_base" : { + "textures" : "textures/blocks/spore_blossom_base" + }, "spruce_planks" : { "textures" : "textures/blocks/planks_spruce" }, @@ -2571,6 +2796,9 @@ "target_top" : { "textures" : "textures/blocks/target_top" }, + "tinted_glass" : { + "textures" : "textures/blocks/tinted_glass" + }, "tnt_bottom" : { "textures" : "textures/blocks/tnt_bottom" }, @@ -2598,6 +2826,9 @@ "trip_wire_source" : { "textures" : "textures/blocks/trip_wire_source" }, + "tuff" : { + "textures" : "textures/blocks/tuff" + }, "turtle_egg" : { "textures" : [ "textures/blocks/turtle_egg_not_cracked", @@ -2656,6 +2887,9 @@ "warped_trapdoor" : { "textures" : "textures/blocks/huge_fungus/warped_trapdoor" }, + "warped_wart_block" : { + "textures" : [ "textures/blocks/warped_wart_block" ] + }, "waterlily" : { "textures" : [ { @@ -2667,6 +2901,12 @@ "waterlily_carried" : { "textures" : "textures/blocks/carried_waterlily" }, + "weathered_copper" : { + "textures" : "textures/blocks/weathered_copper" + }, + "weathered_cut_copper" : { + "textures" : "textures/blocks/weathered_cut_copper" + }, "web" : { "textures" : "textures/blocks/web" }, diff --git a/Maploader/Renderer/Texture/TextureFinder.cs b/Maploader/Renderer/Texture/TextureFinder.cs index dc6121c..3b8aa09 100644 --- a/Maploader/Renderer/Texture/TextureFinder.cs +++ b/Maploader/Renderer/Texture/TextureFinder.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -28,9 +28,6 @@ public class TextureFinder where TImage : class {"minecraft:sapling", true}, {"minecraft:bamboo_sapling", true}, {"minecraft:double_plant", true }, - {"minecraft:double_plant_grass", true }, - {"minecraft:double_plant_bottom", true }, - {"minecraft:double_plant_top", true }, {"minecraft:hopper", true }, {"minecraft:vine", true }, {"minecraft:yellow_flower", true }, @@ -163,9 +160,39 @@ public class TextureFinder where TImage : class {"minecraft:crimson_door", true}, {"minecraft:warped_wall_sign", true}, {"minecraft:crimson_wall_sign", true}, + {"minecraft:chain", true}, + {"minecraft:crimson_button", true}, + {"minecraft:crimson_fence", true}, + {"minecraft:crimson_fence_gate", true}, + {"minecraft:crimson_pressure_plate", true}, + {"minecraft:crimson_standing_sign", true}, + {"minecraft:warped_button", true}, + {"minecraft:warped_fence", true}, + {"minecraft:warped_fence_gate", true}, + {"minecraft:warped_pressure_plate", true}, + {"minecraft:warped_standing_sign", true}, + {"minecraft:weeping_vines", true}, + {"minecraft:warped_trapdoor", true}, + {"minecraft:crimson_trapdoor", true}, + + // Fixes + {"minecraft:chorus_plant", true}, + {"minecraft:cocoa", true}, + {"minecraft:polished_blackstone_button", true}, + {"minecraft:blackstone_wall", true}, + {"minecraft:polished_blackstone_wall", true}, + {"minecraft:polished_blackstone_brick_wall", true}, + {"minecraft:nether_brick_fence", true}, + {"minecraft:coral", true}, + {"minecraft:coral_fan", true}, + {"minecraft:coral_fan_dead", true}, + {"minecraft:coral_fan_hang", true}, + {"minecraft:coral_fan_hang2", true}, + {"minecraft:coral_fan_hang3", true}, + {"minecraft:sea_pickle", true}, + {"minecraft:wither_rose", true}, // Caves & Cliffs Update: Part 1 - {"minecraft:glow_item_frame", true}, {"minecraft:lightning_rod", true}, {"minecraft:small_dripleaf_block", true}, {"minecraft:big_dripleaf", true}, @@ -182,13 +209,12 @@ public class TextureFinder where TImage : class {"minecraft:deepslate_brick_wall", true}, {"minecraft:azalea_leaves", true}, {"minecraft:azalea_leaves_flowered", true}, - {"minecraft:tinted_glass", true}, + // {"minecraft:tinted_glass", true}, // better effect without {"minecraft:glow_lichen", true}, {"minecraft:glow_frame", true}, {"minecraft:cave_vines", true}, {"minecraft:cave_vines_head_with_berries", true}, - {"minecraft:cave_vines_body_with_berries", true} - + {"minecraft:cave_vines_body_with_berries", true}, }; private readonly Dictionary texturesJson; @@ -228,7 +254,8 @@ private TextureStack GetSubstitution(string name, Dictionary dat if (Debug) { - Console.WriteLine($"{x} {z} {y}: {name},{data}"); + String datastring = string.Join(", ", data.Select(kvp => kvp.Key + ": " + kvp.Value.ToString())); + Console.WriteLine($"{x} {z} {y}: {name}, {datastring}"); } @@ -236,13 +263,14 @@ private TextureStack GetSubstitution(string name, Dictionary dat switch (name) { case "cobblestone_wall": - return GetTexture("cobblestone_wall", data).Translate(5, 5, 6, 6); + return RenderWall(data, "cobblestone_wall"); case "bubble_column": - return "textures/blocks/water_placeholder"; case "water": + case "flowing_water": return "textures/blocks/water_placeholder"; case "lava": + case "flowing_lava": return "textures/blocks/lava_placeholder"; case "fire": return "textures/blocks/fire_0_placeholder"; @@ -251,47 +279,34 @@ private TextureStack GetSubstitution(string name, Dictionary dat case "lectern": return "textures/blocks/lectern_top"; case "cake": - return GetTexture("cake_top",0); + { + int bites = (int)data.GetValueOrDefault("bite_counter", 0); + return GetTexture("cake_top", 0).Translate(1 + 2*bites, 1, 14 - 2*bites, 14); + } case "bed": { - int legacyData = LegacyGetOldDataValue(data); - switch (legacyData & 0xF7) - { - case 0: - return CreateTexture((legacyData & 8) == 8 - ? "textures/blocks/bed_head_top" - : "textures/blocks/bed_feet_top") - .Rotate(RotateFlip.Rotate90FlipNone); - case 1: - return CreateTexture((legacyData & 8) == 8 - ? "textures/blocks/bed_head_top" - : "textures/blocks/bed_feet_top") - .Rotate(RotateFlip.Rotate180FlipNone); - case 2: - return CreateTexture((legacyData & 8) == 8 + // TODO: fix bed colours + int headBit = (int)data.GetValueOrDefault("head_piece_bit", 0); + RotateFlip rot = RotateFromDirection(((int)data["direction"] + 3) % 4); + return CreateTexture(headBit != 0 ? "textures/blocks/bed_head_top" : "textures/blocks/bed_feet_top") - .Rotate(RotateFlip.Rotate270FlipNone); - case 3: - return CreateTexture((legacyData & 8) == 8 - ? "textures/blocks/bed_head_top" - : "textures/blocks/bed_feet_top") - .Rotate(RotateFlip.RotateNoneFlipNone); - } - - return null; + .Rotate(rot); } + case "planks": case "wooden_slab": - return GetTexture("planks", data); case "double_wooden_slab": - return GetTexture("planks", data); + { + int plankIndex = WoodIndexes[(string)data.GetValueOrDefault("wood_type")]; + return GetTexture("planks", plankIndex); + } case "prismarine_bricks_stairs": return GetTexture("prismarine_bricks"); case "oak_stairs": - return GetTexture("planks"); // data = direction + return GetTexture("planks", 0); // data = direction case "brick_stairs": return GetTexture("brick"); case "dark_prismarine_stairs": @@ -299,21 +314,21 @@ private TextureStack GetSubstitution(string name, Dictionary dat case "prismarine_stairs": return GetTexture("prismarine"); // data = direction case "spruce_stairs": - return GetTexture("spruce_planks", data); + return GetTexture("spruce_planks"); case "birch_stairs": - return GetTexture("birch_planks", data); + return GetTexture("birch_planks"); case "acacia_stairs": - return GetTexture("acacia_planks", data); + return GetTexture("acacia_planks"); case "dark_oak_stairs": - return GetTexture("dark_oak_planks", data); + return GetTexture("dark_oak_planks"); case "nether_brick_stairs": - return GetTexture("nether_brick", data); + return GetTexture("nether_brick"); case "sandstone_stairs": - return GetTexture("sandstone_top", data); + return GetTexture("sandstone_top"); case "normal_stone_stairs": - return GetTexture("stone", data); + return GetTexture("stone", 0); case "jungle_stairs": - return GetTexture("planks", data); + return GetTexture("jungle_planks"); case "stone_brick_stairs": return GetTexture("stonebrick"); case "stone_stairs": @@ -338,7 +353,7 @@ private TextureStack GetSubstitution(string name, Dictionary dat case "end_brick_stairs": return GetTexture("end_bricks", data); case "smooth_quartz_stairs": - return GetTexture("stair_quartz_block_top", data); + return GetTexture("stair_smooth_quartz_block", data); case "cauldron": return GetTexture("cauldron_inner", data) @@ -346,86 +361,52 @@ private TextureStack GetSubstitution(string name, Dictionary dat case "carpet": return GetTexture("wool", data); case "hay_block": - return GetTexture("hayblock_top", data); + return RenderPillar("hayblock_top", "hayblock_side", data); case "hopper": return GetTexture("hopper_inside", data) + GetTexture("hopper_top", data); + + case "red_flower": + return GetTexture("red_flower", RedFlowerIndexes[(string)data.GetValueOrDefault("flower_type", "poppy")]); case "double_plant": { - int legacyData = LegacyGetOldDataValue(data); - switch (legacyData & 0x8) - { - case 8: + int legacyData = DoublePlantIndexes[(string)data.GetValueOrDefault("double_plant_type", "sunflower")]; + if ((int)data.GetValueOrDefault("upper_block_bit", 0) == 0) + return GetTexture("double_plant_bottom", legacyData & 0xF7); + else return GetTexture("double_plant_carried", legacyData & 0xF7); - case 0: - return GetTexture("double_plant_bottom", legacyData & 0xF7); } + case "waterlily": + return GetTexture("waterlily_carried"); - return null; - } case "tnt": return GetTexture("tnt_top"); case "rail": { - int legacyData = LegacyGetOldDataValue(data); - switch (legacyData) + switch ((int)data.GetValueOrDefault("rail_direction", 0)) { - case 0: - return GetTexture("rail_normal", legacyData); - case 1: - return GetTexture("rail_normal", legacyData).Rotate(RotateFlip.Rotate90FlipNone); - case 2: - return GetTexture("rail_normal", legacyData).Rotate(RotateFlip.Rotate90FlipNone); - case 3: - return GetTexture("rail_normal", legacyData).Rotate(RotateFlip.Rotate90FlipNone); - case 4: - return GetTexture("rail_normal", legacyData); - case 5: - return GetTexture("rail_normal", legacyData); case 6: - return GetTexture("rail_normal_turned", legacyData); + return GetTexture("rail_normal_turned"); case 7: - return GetTexture("rail_normal_turned", legacyData).Rotate(RotateFlip.Rotate90FlipNone); + return GetTexture("rail_normal_turned").Rotate(RotateFlip.Rotate90FlipNone); case 8: - return GetTexture("rail_normal_turned", legacyData).Rotate(RotateFlip.Rotate180FlipNone); + return GetTexture("rail_normal_turned").Rotate(RotateFlip.Rotate180FlipNone); case 9: - return GetTexture("rail_normal_turned", legacyData).Rotate(RotateFlip.Rotate270FlipNone); + return GetTexture("rail_normal_turned").Rotate(RotateFlip.Rotate270FlipNone); } - - return null; + return RenderRail("rail_normal", data); } case "golden_rail": - { - int legacyData = LegacyGetOldDataValue(data); - if ((legacyData & 8) == 8) - return RenderRail(legacyData & 0xF7, "rail_golden_powered"); - else - return RenderRail(legacyData, "rail_golden"); - } + return RenderRail("rail_golden", "rail_golden_powered", data); case "activator_rail": - { - int legacyData = LegacyGetOldDataValue(data); - if ((legacyData & 8) == 8) - return RenderRail(legacyData & 0xF7, "rail_activator"); - else - return RenderRail(legacyData, "rail_activator"); - } - - + return RenderRail("rail_activator", "rail_activator_powered", data); case "detector_rail": - { - int legacyData = LegacyGetOldDataValue(data); - if ((legacyData & 8) == 8) - return RenderRail(legacyData & 0xF7, "rail_detector_powered"); - else - return RenderRail(legacyData, "rail_detector"); - } + return RenderRail("rail_detector", "rail_detector_powered", data); + case "stonebrick": + return GetTexture("stonebrick", StoneBrickIndexes[(string)data["stone_brick_type"]]); case "monster_egg": - { - int legacyData = LegacyGetOldDataValue(data); - return GetTexture("monster_egg", Math.Max(0, legacyData - 1)); - } + return GetTexture("monster_egg", MonsterEggIndexes[(string)data["monster_egg_stone_type"]]); case "red_mushroom_block": return GetTexture("mushroom_red_top", data); @@ -451,75 +432,80 @@ private TextureStack GetSubstitution(string name, Dictionary dat return GetTexture("stained_glass_pane_top", data); case "redstone_torch": return GetTexture("redstone_torch_on", data); + case "unlit_redstone_torch": + return GetTexture("redstone_torch_off", data); case "redstone_wire": return GetTexture("redstone_dust_cross", data); case "lit_redstone_ore": return GetTexture("redstone_ore", data); case "unpowered_repeater": - return GetTexture("repeater_up", data); + { + int dir = ((int)data.GetValueOrDefault("direction") + 2) % 4; + return GetTexture("repeater_up", 0, null, RotateFromDirection(dir)); + } + case "powered_repeater": + { + int dir = ((int)data.GetValueOrDefault("direction") + 2) % 4; + return GetTexture("repeater_up", 1, null, RotateFromDirection(dir)); + } case "daylight_detector": - return GetTexture("daylight_detector_top", data); + return GetTexture("daylight_detector_top", 0); case "daylight_detector_inverted": - return GetTexture("daylight_detector_top", data); + return GetTexture("daylight_detector_top", 1); case "dispenser": { - int legacyData = LegacyGetOldDataValue(data); - switch ((BlockFace) legacyData) + switch ((BlockFace) data["facing_direction"]) { case BlockFace.Up: return GetTexture("dispenser_front_vertical"); default: - return GetTexture("dispenser_top", legacyData); + return GetTexture("dispenser_top"); } } - case "observer": { - int legacyData = LegacyGetOldDataValue(data); - switch ((BlockFace) legacyData) + int powered = (int)data.GetValueOrDefault("powered_bit", 0); + switch ((BlockFace) data["facing_direction"]) { case BlockFace.Down: - return GetTexture("observer_south"); + return GetTexture("observer_south", powered); case BlockFace.Up: - return GetTexture("observer_north"); + return GetTexture("observer_north", powered); case BlockFace.North: - return GetTexture("observer_top", 0, null, RotateFlip.Rotate180FlipNone); + return GetTexture("observer_top", powered, null, RotateFlip.Rotate180FlipNone); case BlockFace.South: - return GetTexture("observer_top"); + return GetTexture("observer_top", powered); case BlockFace.West: - return GetTexture("observer_top", 0, null, RotateFlip.Rotate90FlipNone); + return GetTexture("observer_top", powered, null, RotateFlip.Rotate90FlipNone); case BlockFace.East: - return GetTexture("observer_top", 0, null, RotateFlip.Rotate270FlipNone); + return GetTexture("observer_top", powered, null, RotateFlip.Rotate270FlipNone); } - - return GetTexture("observer_top", legacyData); + return GetTexture("observer_top"); } - case "dropper": { - int legacyData = LegacyGetOldDataValue(data); - switch ((BlockFace) legacyData) + switch ((BlockFace) data["facing_direction"]) { case BlockFace.Up: return GetTexture("dropper_front_vertical"); default: - return GetTexture("dropper_top", legacyData); + return GetTexture("dropper_top"); } } case "smoker": + case "lit_smoker": return GetTexture("smoker_top"); case "barrel": { - int legacyData = LegacyGetOldDataValue(data); - switch ((BlockFace)legacyData) + switch ((BlockFace)data["facing_direction"]) { case BlockFace.Up: return GetTexture("barrel_top"); case BlockFace.Down: return GetTexture("barrel_bottom"); default: - return GetTexture("barrel_side", legacyData); + return GetTexture("barrel_side", data); } } case "bell": @@ -533,45 +519,54 @@ private TextureStack GetSubstitution(string name, Dictionary dat case "ender_chest": return GetTexture("ender_chest_inventory_top", data); case "anvil": - return GetTexture("anvil_top_damaged_x", data); + { + int damage = 0; + switch ((string)data["damage"]) + { + case "slightly_damaged": + damage = 1; break; + case "very_damaged": + damage = 2; break; + } + return GetTexture("anvil_top_damaged_x", damage, null, RotateFromDirection(data)); + } case "cactus": return GetTexture("cactus_top", data).Translate(1, 1, 14, 14); case "dark_oak_pressure_plate": - return GetTexture("dark_oak_planks", 0).Translate(1, 1, 14, 14); + return RenderPressurePlate("dark_oak_planks", data); case "birch_pressure_plate": - return GetTexture("birch_planks", 0).Translate(1, 1, 14, 14); + return RenderPressurePlate("birch_planks", data); case "jungle_pressure_plate": - return GetTexture("jungle_planks", 0).Translate(1, 1, 14, 14); + return RenderPressurePlate("jungle_planks", data); case "acacia_pressure_plate": - return GetTexture("acacia_planks", 0).Translate(1, 1, 14, 14); + return RenderPressurePlate("acacia_planks", data); case "wooden_pressure_plate": - return GetTexture("planks", data).Translate(1, 1, 14, 14); + return RenderPressurePlate("planks", data); case "spruce_pressure_plate": - return GetTexture("spruce_planks", data).Translate(1, 1, 14, 14); + return RenderPressurePlate("spruce_planks", data); case "light_weighted_pressure_plate": - return GetTexture("gold_block", data).Translate(1, 1, 14, 14); + return RenderPressurePlate("gold_block", data); case "heavy_weighted_pressure_plate": - return GetTexture("iron_block", data).Translate(1, 1, 14, 14); + return RenderPressurePlate("iron_block", data); case "stone_pressure_plate": - return GetTexture("stone", data).Translate(1, 1, 14, 14); - ; + return RenderPressurePlate("stone", data); case "frame": - return RenderFrame(data, "sign"); + return RenderItemFrame(data, "itemframe_background"); case "standing_sign": - return RenderSign("sign"); + return RenderSign(data, "sign"); case "spruce_standing_sign": - return RenderSign("spruce_sign"); + return RenderSign(data, "spruce_sign"); case "birch_standing_sign": - return RenderSign("birch_sign"); + return RenderSign(data, "birch_sign"); case "jungle_standing_sign": - return RenderSign("acacia_sign"); + return RenderSign(data, "jungle_sign"); case "acacia_standing_sign": - return RenderSign("jungle_sign"); + return RenderSign(data, "acacia_sign"); case "darkoak_standing_sign": - return RenderSign("darkoak_sign"); + return RenderSign(data, "darkoak_sign"); case "fence_gate": return RenderFenceGate(data, "planks"); @@ -587,13 +582,10 @@ private TextureStack GetSubstitution(string name, Dictionary dat return RenderFenceGate(data, "dark_oak_planks"); case "nether_brick_fence": - return GetTexture("nether_brick", 0, new TextureTranslation( - new Rect(5, 5, 6, 6), - new Rect(0, 0, 16, 16))); + return RenderFence("nether_brick", data); case "fence": - return GetTexture("planks", data, new TextureTranslation( - new Rect(5, 5, 6, 6), - new Rect(0, 0, 16, 16))); + data["val"] = WoodIndexes[(string)data.GetValueOrDefault("wood_type")]; + return RenderFence("planks", data); case "podzol": return GetTexture("dirt_podzol_top", data); case "grass": @@ -648,11 +640,14 @@ private TextureStack GetSubstitution(string name, Dictionary dat case "stained_hardened_clay": return GetTexture("stained_clay", data); - - - case "end_portal_frame": - return GetTexture("endframe_top"); + { + RotateFlip rot = RotateFromDirection(data); + TextureStack t = GetTexture("endframe_top", 0, null, rot); + if ((int)data.GetValueOrDefault("end_portal_eye_bit", 0) != 0) + t += GetTexture("endframe_eye", 0).Translate(4, 4, 8, 8).Rotate(rot); + return t; + } case "wooden_door": return GetTexture("door_upper"); @@ -685,7 +680,7 @@ private TextureStack GetSubstitution(string name, Dictionary dat return RenderButton(data, "jungle_planks"); case "wall_banner": case "standing_banner": - return RenderSign("sign"); + return RenderSign(data, "sign"); case "tripWire": return GetTexture("trip_wire", data); case "tripwire_hook": @@ -700,19 +695,39 @@ private TextureStack GetSubstitution(string name, Dictionary dat case "birch_wall_sign": case "jungle_wall_sign": case "acacia_wall_sign": + case "warped_wall_sign": + case "crimson_wall_sign": return RenderWallSign(data, name.Replace("wall_", "")); case "melon_block": return GetTexture("melon_top", data); case "quartz_block": - return GetTexture("quartz_block_top", data); + { + switch ((string)data.GetValueOrDefault("chisel_type", "default")) + { + case "chiseled": + data["val"] = 1; break; + case "lines": + data["val"] = 2; break; + case "smooth": + data["val"] = 3; break; + } + return RenderPillar("quartz_block_top", "quartz_block_side", data); + } case "seaLantern": return GetTexture("sea_lantern", data); case "purpur_block": - return GetTexture("purpur_block_side", data); + { + switch ((string)data.GetValueOrDefault("chisel_type", "default")) + { + case "lines": + data["val"] = 2; break; + } + return RenderPillar("purpur_block_top", "purpur_block_side", data); + } case "turtle_egg": return GetTexture("turtle_egg", 0).Translate( @@ -735,9 +750,10 @@ private TextureStack GetSubstitution(string name, Dictionary dat return RenderPiston(data, "sticky"); case "jukebox": return GetTexture("jukebox_top", data); - case "stonecutter_block": case "stonecutter": return GetTexture("stonecutter_top", data); + case "stonecutter_block": + return GetTexture("stonecutter2_top", data); case "loom": return GetTexture("loom_top", data); case "smithing_table": @@ -755,36 +771,27 @@ private TextureStack GetSubstitution(string name, Dictionary dat return GetTexture("undyed_shulker_box_top", data); case "red_sandstone": + // sand_stone_type makes no difference to top return GetTexture("redsandstone_top", data); case "sandstone": + // sand_stone_type makes no difference to top return GetTexture("sandstone_top", data); case "stone_slab": - return GetTexture("stone_slab_top", data); - + case "double_stone_slab": + return GetTexture("stone_slab_top", StoneSlabIndexes[1][(string)data["stone_slab_type"]]); case "stone_slab2": - return GetTexture("stone_slab_top_2", data); case "double_stone_slab2": - return GetTexture("stone_slab_top_2", data); + return GetTexture("stone_slab_top_2", StoneSlabIndexes[2][(string)data["stone_slab_type_2"]]); case "stone_slab3": - - return GetTexture("stone_slab_top_3", data); case "double_stone_slab3": - return GetTexture("stone_slab_top_3", data); - + return GetTexture("stone_slab_top_3", StoneSlabIndexes[3][(string)data["stone_slab_type_3"]]); case "stone_slab4": - return GetTexture("stone_slab_top_4", data); case "double_stone_slab4": - return GetTexture("stone_slab_top_4", data); - - - case "double_stone_slab": - return GetTexture("stone_slab_top", data); - + return GetTexture("stone_slab_top_4", StoneSlabIndexes[4][(string)data["stone_slab_type_4"]]); case "bone_block": - return GetTexture("bone_block_top", data); - + return RenderPillar("bone_block_top", "bone_block_side", data); case "mycelium": return GetTexture("mycelium_top", data); @@ -800,12 +807,6 @@ private TextureStack GetSubstitution(string name, Dictionary dat new Rect(0, 0, 4, 16) )); - case "powered_repeater": - return GetTexture("repeater_up", data); - - case "unlit_redstone_torch": - return GetTexture("redstone_torch_off", data); - case "lit_furnace": return GetTexture("redstone_torch_off", data); @@ -830,84 +831,144 @@ private TextureStack GetSubstitution(string name, Dictionary dat /* LEAVES */ case "leaves": { - int legacyData = LegacyGetOldDataValue(data); - return GetTexture("leaves_carried", legacyData & 0xF7); + int val = WoodIndexes[(string)data.GetValueOrDefault("old_leaf_type", "oak")]; + return GetTexture("leaves_carried", val); } case "leaves2": { - int legacyData = LegacyGetOldDataValue(data); - return GetTexture("leaves_carried2", legacyData & 0xF7); + int val = WoodIndexes[(string)data.GetValueOrDefault("new_leaf_type", "acacia")] - 4; + return GetTexture("leaves_carried2", val); } /* WOOD */ case "wood": { - int legacyData = LegacyGetOldDataValue(data); - return GetTexture("wood", (legacyData & 0xFFF7) * 2 + ((legacyData & 0x8) / 8)); + int plankIndex = WoodIndexes[(string)data.GetValueOrDefault("wood_type", "oak")]; + int strippedBit = (int)data.GetValueOrDefault("stripped_bit", 0); + data["val"] = plankIndex * 2 + strippedBit; + return RenderPillar("wood", data); } case "stripped_jungle_log": - { - int legacyData = LegacyGetOldDataValue(data); - return GetTexture((legacyData & 2) == 0 ? "stripped_jungle_log_top" : "stripped_jungle_log_side", legacyData); - } + return RenderPillar("stripped_jungle_log_top", "stripped_jungle_log_side", data); case "stripped_spruce_log": - { - int legacyData = LegacyGetOldDataValue(data); - return GetTexture((legacyData & 2) == 0 ? "stripped_spruce_log_top" : "stripped_spruce_log_side", legacyData); - } + return RenderPillar("stripped_spruce_log_top", "stripped_spruce_log_side", data); case "stripped_birch_log": - { - int legacyData = LegacyGetOldDataValue(data); - return GetTexture((legacyData & 2) == 0 ? "stripped_birch_log_top" : "stripped_birch_log_side", legacyData); - } + return RenderPillar("stripped_birch_log_top", "stripped_birch_log_side", data); case "stripped_dark_oak_log": + return RenderPillar("stripped_dark_oak_log_top", "stripped_dark_oak_log_side", data); + case "stripped_oak_log": + return RenderPillar("stripped_oak_log_top", "stripped_oak_log_side", data); + case "stripped_acacia_log": + return RenderPillar("stripped_acacia_log_top", "stripped_acacia_log_side", data); + + case "log": { - int legacyData = LegacyGetOldDataValue(data); - return GetTexture((legacyData & 2) == 0 ? "stripped_dark_oak_log_top" : "stripped_dark_oak_log_side", - legacyData); + data["val"] = WoodIndexes[(string)data.GetValueOrDefault("old_log_type", "oak")]; + return RenderPillar("log_top", "log_side", data); } - case "stripped_oak_log": + case "log2": { - int legacyData = LegacyGetOldDataValue(data); - return GetTexture((legacyData & 2) == 0 ? "stripped_oak_log_top" : "stripped_oak_log_side", legacyData); + data["val"] = WoodIndexes[(string)data.GetValueOrDefault("new_log_type", "acacia")] - 4; + return RenderPillar("log_top2", "log_side2", data); } - case "stripped_acacia_log": + + case "sapling": { - int legacyData = LegacyGetOldDataValue(data); - return GetTexture((legacyData & 2) == 0 ? "stripped_acacia_log_top" : "stripped_acacia_log_side", legacyData); + int val = WoodIndexes[(string)data.GetValueOrDefault("sapling_type")]; + return GetTexture("sapling", val); } case "enchanting_table": return GetTexture("enchanting_table_top", data); - case "log": + + case "coral_block": { - int legacyData = LegacyGetOldDataValue(data); - return GetTexture((legacyData & 8) == 0 ? "log_top" : "log_side", legacyData & 3); + int dead = (int)data.GetValueOrDefault("dead_bit", 0); + int coralIndex = CoralIndexes[(string)data["coral_color"]]; + return GetTexture("coral_block", coralIndex + dead * 5); } - case "log2": + case "coral": { - int legacyData = LegacyGetOldDataValue(data); - return GetTexture((legacyData & 8) == 0 ? "log_top2" : "log_side2", legacyData & 3); + int dead = (int)data.GetValueOrDefault("dead_bit", 0); + int coralIndex = CoralIndexes[(string)data["coral_color"]]; + return GetTexture("coral", coralIndex + dead * 5); + } + case "coral_fan": + { + int coralIndex = CoralIndexes[(string)data["coral_color"]]; + Rect srcRect = new Rect(0, 6, 16, 8); + Rect destRect = new Rect(0, 0, 16, 8); + return GetTexture("coral_fan", coralIndex).Translate(srcRect, destRect) + + GetTexture("coral_fan", coralIndex).Translate(srcRect, destRect).Rotate(RotateFlip.Rotate90FlipNone) + + GetTexture("coral_fan", coralIndex).Translate(srcRect, destRect).Rotate(RotateFlip.Rotate180FlipNone) + + GetTexture("coral_fan", coralIndex).Translate(srcRect, destRect).Rotate(RotateFlip.Rotate270FlipNone); + } + case "coral_fan_dead": + { + int coralIndex = CoralIndexes[(string)data["coral_color"]]; + Rect srcRect = new Rect(0, 6, 16, 8); + Rect destRect = new Rect(0, 0, 16, 8); + return GetTexture("coral_fan_dead", coralIndex).Translate(srcRect, destRect) + + GetTexture("coral_fan_dead", coralIndex).Translate(srcRect, destRect).Rotate(RotateFlip.Rotate90FlipNone) + + GetTexture("coral_fan_dead", coralIndex).Translate(srcRect, destRect).Rotate(RotateFlip.Rotate180FlipNone) + + GetTexture("coral_fan_dead", coralIndex).Translate(srcRect, destRect).Rotate(RotateFlip.Rotate270FlipNone); } - case "coral_fan_hang": - return GetTexture("coral_fan_hang_a", data); + { + int dead = (int)data.GetValueOrDefault("dead_bit", 0); + int coralType = (int)data.GetValueOrDefault("coral_hang_type_bit", 0); + RotateFlip rot = CoralRotations[(int)data.GetValueOrDefault("coral_direction", 0)]; + return GetTexture("coral_fan_hang_a", coralType + dead * 2, null, rot); + } case "coral_fan_hang2": - return GetTexture("coral_fan_hang_b", data); + { + int dead = (int)data.GetValueOrDefault("dead_bit", 0); + int coralType = (int)data.GetValueOrDefault("coral_hang_type_bit", 0); + RotateFlip rot = CoralRotations[(int)data.GetValueOrDefault("coral_direction", 0)]; + return GetTexture("coral_fan_hang_b", coralType + dead * 2, null, rot); + } case "coral_fan_hang3": - return GetTexture("coral_fan_hang_c", data); + { + int dead = (int)data.GetValueOrDefault("dead_bit", 0); + int coralType = (int)data.GetValueOrDefault("coral_hang_type_bit", 0); + RotateFlip rot = CoralRotations[(int)data.GetValueOrDefault("coral_direction", 0)]; + return GetTexture("coral_fan_hang_c", coralType + dead * 2, null, rot); + } case "scaffolding": return GetTexture("scaffolding_top", data); case "grindstone": return GetTexture("grindstone_pivot", data); + + case "beetroot": + { + int growth = (int)data.GetValueOrDefault("growth", 0) % 8; + return GetTexture("beetroot", GrowthEightToFour[growth]); + } + case "carrots": + { + int growth = (int)data.GetValueOrDefault("growth", 0) % 8; + return GetTexture("carrots", GrowthEightToFour[growth]); + } + case "potatoes": + { + int growth = (int)data.GetValueOrDefault("growth", 0) % 8; + return GetTexture("potatoes", GrowthEightToFour[growth]); + } case "sweet_berry_bush": { - int legacyData = LegacyGetOldDataValue(data); - return GetTexture($"sweet_berry_bush_{legacyData%4}"); + int growth = (int)data.GetValueOrDefault("growth", 0); + if (growth > 3) growth = 3; + return GetTexture($"sweet_berry_bush_{growth}"); + } + case "wheat": + { + int growth = (int)data.GetValueOrDefault("growth", 0); + return GetTexture("wheat", growth); } + case "bee_nest": return GetTexture("bee_nest_top", data); case "beehive": @@ -929,9 +990,13 @@ private TextureStack GetSubstitution(string name, Dictionary dat case "warped_nylium": return GetTexture("warped_nylium_top", data); case "crimson_stem": - return GetTexture("stripped_crimson_stem_top", data); + return RenderPillar("crimson_log_top", "crimson_log_side", data); + case "stripped_crimson_stem": + return RenderPillar("stripped_crimson_stem_top", "stripped_crimson_stem_side", data); case "warped_stem": - return GetTexture("stripped_warped_stem_top", data); + return RenderPillar("warped_stem_top", "warped_stem_side", data); + case "stripped_warped_stem": + return RenderPillar("stripped_warped_stem_top", "stripped_warped_stem_side", data); case "warped_fungus": return GetTexture("nether_shroom_blue", data); case "crimson_fungus": @@ -942,9 +1007,9 @@ private TextureStack GetSubstitution(string name, Dictionary dat return GetTexture("soul_fire_0", data); case "basalt": - return GetTexture("basalt_top", data); + return RenderPillar("basalt_top", "basalt_side", data); case "polished_basalt": - return GetTexture("polished_basalt_top", data); + return RenderPillar("polished_basalt_top", "polished_basalt_side", data); case "blackstone": return GetTexture("blackstone_top", data); @@ -953,31 +1018,131 @@ private TextureStack GetSubstitution(string name, Dictionary dat case "blackstone_stairs": return GetTexture("blackstone_top", data); case "blackstone_wall": - return GetTexture("blackstone_top", data); + return RenderWall(data, "blackstone_top"); case "polished_blackstone_slab": return GetTexture("polished_blackstone", data); case "polished_blackstone_stairs": return GetTexture("polished_blackstone", data); case "polished_blackstone_wall": - return GetTexture("polished_blackstone", data); + return RenderWall(data, "polished_blackstone"); case "polished_blackstone_brick_slab": return GetTexture("polished_blackstone_bricks", data); case "polished_blackstone_brick_stairs": return GetTexture("polished_blackstone_bricks", data); case "polished_blackstone_brick_wall": - return GetTexture("polished_blackstone_bricks", data); + return RenderWall(data, "polished_blackstone_bricks"); case "warped_door": return GetTexture("warped_door_top", data); case "crimson_door": return GetTexture("crimson_door_top", data); - case "warped_wall_sign": - return RenderWallSign(data, name.Replace("wall_", "")); - case "crimson_wall_sign": - return RenderWallSign(data, name.Replace("wall_", "")); + // some fixes + case "ancient_debris": + return GetTexture("ancient_debris_top"); + case "beacon": + // TODO: add shell + base + return GetTexture("beacon"); + case "blackstone_double_slab": + return GetTexture("blackstone"); + case "blast_furnace": + case "lit_blast_furnace": + return GetTexture("blast_furnace_top"); + case "bookshelf": + return GetTexture("planks"); + case "calcite": + return GetTexture("calcite"); + case "chorus_flower": + return GetTexture("chorus_flower", (int)data["age"] > 4 ? 1 : 0); + case "crimson_button": + return RenderButton(data, "crimson_planks"); + case "crimson_double_slab": + case "crimson_slab": + case "crimson_stairs": + return GetTexture("crimson_planks"); + case "crimson_fence": + return RenderFence("crimson_planks", data); + case "crimson_fence_gate": + return RenderFenceGate(data, "crimson_planks"); + case "crimson_hyphae": + return RenderPillar("crimson_log_side", data); + case "crimson_pressure_plate": + return RenderPressurePlate("crimson_planks", data); + case "crimson_standing_sign": + return RenderSign(data, "crimson_sign"); + case "lava_cauldron": + // TODO: add lava + return GetTexture("cauldron_top"); + case "lodestone": + return GetTexture("lodestone_top"); + case "polished_blackstone_button": + return RenderButton(data, "polished_blackstone"); + case "polished_blackstone_double_slab": + return GetTexture("polished_blackstone"); + case "polished_blackstone_pressure_plate": + return RenderPressurePlate("polished_blackstone", data); + case "polished_blackstone_brick_double_slab": + return GetTexture("polished_blackstone_bricks"); + case "respawn_anchor": + return GetTexture("respawn_anchor_top", (int)data["respawn_anchor_charge"]).Translate(0, 0, 16, 16); + case "soul_campfire": + return GetTexture("soul_campfire_log_lit", 0).Translate(0, 0, 16, 16); + case "stripped_crimson_hyphae": + return RenderPillar("stripped_crimson_stem_side", data); + case "stripped_warped_hyphae": + return RenderPillar("stripped_warped_stem_side", data); + case "target": + return GetTexture("target_top"); + case "warped_button": + return RenderButton(data, "warped_planks"); + case "warped_double_slab": + case "warped_slab": + case "warped_stairs": + return GetTexture("warped_planks"); + case "warped_fence": + return RenderFence("warped_planks", data); + case "warped_fence_gate": + return RenderFenceGate(data, "warped_planks"); + case "warped_hyphae": + return RenderPillar("warped_stem_side", data); + case "warped_pressure_plate": + return RenderPressurePlate("warped_planks", data); + case "warped_standing_sign": + return RenderSign(data, "warped_sign"); + case "weeping_vines": + return GetTexture("weeping_vines_base"); + case "lantern": + // TODO: support ceiling + return RenderLantern(data, "lantern"); + case "soul_lantern": + return RenderLantern(data, "soul_lantern"); + case "sea_pickle": + // TODO: number of pickles + return GetTexture("sea_pickle", data).Translate( + new Rect(0, 0, 4, 11), // 11 might not be the right number + new Rect(6, 5, 4, 11)); + case "sponge": + return GetTexture("sponge", (string)data["sponge_type"] == "wet" ? 1 : 0); + case "stone": + { + int index = StoneIndexes[(string)data.GetValueOrDefault("stone_type", "stone")]; + return GetTexture("stone", index); + } + case "sand": + { + string sand_type = (string)data.GetValueOrDefault("sand_type", "normal"); + return GetTexture("sand", sand_type == "red" ? 1 : 0); + } + case "vine": + return GetTexture("vine_carried"); + // TODO: fix string textures + + case "chain": + return RenderChain(data); + case "end_rod": + return RenderEndRod(data); // Caves & Cliffs Update: Part 1 (1.17) case "waxed_oxidized_cut_copper_stairs": @@ -1022,13 +1187,13 @@ private TextureStack GetSubstitution(string name, Dictionary dat return GetTexture("copper_block", data); case "cobbled_deepslate_wall": - return GetTexture("cobbled_deepslate", data).Translate(5, 5, 6, 6); + return RenderWall(data, "cobbled_deepslate"); case "deepslate_tile_wall": - return GetTexture("deepslate_tiles", data).Translate(5, 5, 6, 6); + return RenderWall(data, "deepslate_tiles"); case "polished_deepslate_wall": - return GetTexture("polished_deepslate", data).Translate(5, 5, 6, 6); + return RenderWall(data, "polished_deepslate"); case "deepslate_brick_wall": - return GetTexture("deepslate_bricks", data).Translate(5, 5, 6, 6); + return RenderWall(data, "deepslate_bricks"); case "cobbled_deepslate_stairs": case "cobbled_deepslate_slab": case "cobbled_deepslate_double_slab": @@ -1045,15 +1210,16 @@ private TextureStack GetSubstitution(string name, Dictionary dat case "deepslate_brick_stairs": case "deepslate_brick_double_slab": return GetTexture("deepslate_bricks", data); + case "deepslate": case "infested_deepslate": - return GetTexture("deepslate", data); + return RenderPillar("deepslate_top", "deepslate", data); case "lit_deepslate_redstone_ore": return GetTexture("deepslate_redstone_ore", data); case "glow_frame": - return RenderGlowItemFrame(data); + return RenderItemFrame(data, "glow_item_frame"); case "small_dripleaf_block": return RenderSmallDripleaf(data); case "moss_carpet": @@ -1089,35 +1255,49 @@ private TextureStack GetSubstitution(string name, Dictionary dat return null; } - private TextureStack RenderWallSign(Dictionary data, string texture) + private TextureStack RenderWallSign (Dictionary data, string texture) + { + return RenderWallSign(texture, data); + } + private TextureStack RenderWallSign (string texture, Dictionary data) { - var t = GetTexture(texture, 0).Translate( + return GetTexture(texture, data).Translate( new Rect(0, 7, 14, 2), new Rect(1, 0, 14, 2) ); - switch (LegacyGetOldDataValue(data)) + } + + private TextureStack RenderChain(Dictionary data) + { + var t = GetTexture("chain1", 0).Translate(new Rect(0, 0, 3, 16), new Rect(6, 0, 4, 16)); + + try { - case 0: - return t.Rotate(RotateFlip.Rotate270FlipNone); - case 1: - return t.Rotate(RotateFlip.Rotate90FlipNone); - case 2: - return t.Rotate(RotateFlip.Rotate180FlipNone); - case 3: - return t.Rotate(RotateFlip.RotateNoneFlipNone); - case 4: - return t.Rotate(RotateFlip.Rotate90FlipNone); - case 5: - return t.Rotate(RotateFlip.Rotate270FlipNone); + string dir = (string)data["pillar_axis"]; + switch (dir) + { + case "x": + return t.Rotate(RotateFlip.Rotate90FlipNone); + case "y": + return GetTexture("chain2", data).Translate(new Rect(0, 6, 4, 3), new Rect(7, 7, 4, 3)); + } + } + catch + { + Console.WriteLine("Invalid parameters for chain1"); } - return null; + return t; } - - private TextureStack RenderRail(int data, string texture) + private TextureStack RenderRail (string texture_off, string texture_on, Dictionary data) + { + string texture = (int)data.GetValueOrDefault("rail_data_bit", 0) == 0 ? texture_off : texture_on; + return RenderRail(texture, data); + } + private TextureStack RenderRail (string texture, Dictionary data) { - switch (data) + switch ((int)data.GetValueOrDefault("rail_direction", 0)) { case 0: return GetTexture(texture, data); @@ -1136,133 +1316,103 @@ private TextureStack RenderRail(int data, string texture) return null; } - private TextureStack RenderSign(string texture) + private TextureStack RenderSign (Dictionary data, string texture) + { + return RenderSign(texture, data); + } + private TextureStack RenderSign(string texture, Dictionary data) { + // TODO: rotation return GetTexture(texture, 0).Translate( new Rect(0, 7, 14, 2), new Rect(1, 7, 14, 2) ); } - private TextureStack RenderFrame(Dictionary data, string texture) + private TextureStack RenderButton (Dictionary data, string texture) { - var t = GetTexture(texture, 0).Translate( - new Rect(0, 7, 14, 2), - new Rect(1, 0, 14, 2) - ); - switch (LegacyGetOldDataValue(data)) - { - case 0: - return t.Rotate(RotateFlip.Rotate270FlipNone); - case 1: - return t.Rotate(RotateFlip.Rotate90FlipNone); - case 3: - return t.Rotate(RotateFlip.Rotate180FlipNone); - case 2: - return t.Rotate(RotateFlip.RotateNoneFlipNone); - } - - return t; + return RenderButton(texture, data); } - - private TextureStack RenderButton(Dictionary data, string texture) + private TextureStack RenderButton(string texture, Dictionary data) { - int legacyData = LegacyGetOldDataValue(data); - var t = GetTexture(texture, 0).Translate( - new Rect(6, 6, 4, 3), - new Rect(6, 0, 4, 3) - ); - if ((legacyData & 8) == 8) + int direction = (int)data["facing_direction"]; + var t = GetTexture(texture, 0); + int thickness = (int)data.GetValueOrDefault("button_pressed_bit", 0) == 0 ? 2 : 1; + switch (direction) { - // Per https://minecraft.gamepedia.com/Button : 0x8 If this bit is set, the button is currently active - // Active/Unactive, on the scale rendering, doesn't matter, so remove that bit - legacyData = legacyData ^ 8; - } - switch (legacyData) - { - - case 1: - return t.Translate( - new Rect(6, 6, 4, 4), - new Rect(6, 6, 4, 4)); - case 2: - return t.Rotate(RotateFlip.Rotate180FlipNone); - - case 3: - return t.Rotate(RotateFlip.RotateNoneFlipNone); - case 4: - return t.Rotate(RotateFlip.Rotate90FlipNone); case 0: // 0: Button on block bottom facing down. Assuming bottom = top - case 5: // 5: Button on block top facing up - return t.Rotate(RotateFlip.Rotate270FlipNone); + case 1: // 1: Button on block top facing up + return t.Translate(new Rect(5, 6, 6, 4)); + case 2: // north + return t.Translate(new Rect(5, 16 - thickness, 6, thickness)); + case 3: // south + return t.Translate(new Rect(5, 0, 6, thickness)); + case 4: // east + return t.Translate(new Rect(16 - thickness, 5, thickness, 6)); + case 5: // west + return t.Translate(new Rect(0, 5, thickness, 6)); default: return null; } } - private TextureStack RenderFenceGate(Dictionary data, string texture) + private TextureStack RenderFence (Dictionary data, string texture) + { + return RenderFence(texture, data); + } + private TextureStack RenderFence (string texture, Dictionary data) + { + TextureStack full = GetTexture(texture, data).Translate(6, 6, 4, 4); + // TODO: sides? 2px + return full; + } + + private TextureStack RenderFenceGate (Dictionary data, string texture) { - int legacyData = LegacyGetOldDataValue(data); - if ((legacyData & 8) == 8) + return RenderFenceGate(texture, data); + } + private TextureStack RenderFenceGate (string texture, Dictionary data) + { + int direction = (int)data["direction"]; + int open_bit = (int)data["open_bit"]; + + if (open_bit != 0) { - // Per https://minecraft.gamepedia.com/Fence_Gate : 0x8 If 1, the gate is lowered by three pixels, to accommodate attaching more cleanly with normal and mossy Cobblestone Walls - // 3 pixels, on the scale rendering, doesn't matter, so remove that bit - legacyData = legacyData ^ 8; - } - switch (legacyData) + switch (direction) { case 0: - case 2: - return GetTexture(texture, 0).Translate(new Rect(0, 6, 16, 4)); - case 1: - case 3: - return GetTexture(texture, 0).Translate(new Rect(0, 6, 16, 4)).Rotate(RotateFlip.Rotate90FlipNone); - - case 4: return GetTexture(texture, 0) .Translate( - new Rect(0, 6, 10, 4), - new Rect(6, 0, 10, 4)) - .Rotate(RotateFlip.Rotate90FlipNone) - + new Rect(0, 7, 2, 9)) + GetTexture(texture, 0) .Translate( - new Rect(0, 6, 10, 4), - new Rect(6, 12, 10, 4)) - .Rotate(RotateFlip.Rotate90FlipNone); - case 6: + new Rect(14, 7, 2, 9)); + case 2: return GetTexture(texture, 0) .Translate( - new Rect(0, 6, 10, 4), - new Rect(6, 0, 10, 4)) - .Rotate(RotateFlip.Rotate270FlipNone) - + new Rect(0, 0, 2, 9)) + GetTexture(texture, 0) .Translate( - new Rect(0, 6, 10, 4), - new Rect(6, 12, 10, 4)) - .Rotate(RotateFlip.Rotate270FlipNone); - case 5: - return GetTexture(texture, 0) - .Translate( - new Rect(0, 6, 10, 4), - new Rect(6, 0, 10, 4)) - .Rotate(RotateFlip.Rotate180FlipNone) - - + GetTexture(texture, 0) - .Translate( - new Rect(0, 6, 10, 4), - new Rect(6, 12, 10, 4)) - .Rotate(RotateFlip.Rotate180FlipNone); - - case 7: - return GetTexture(texture, 0).Translate( - new Rect(0, 6, 10, 4), - new Rect(6, 0, 10, 4)) - + GetTexture(texture, 0).Translate( - new Rect(0, 6, 10, 4), - new Rect(6, 12, 10, 4)); - + new Rect(14, 0, 2, 9)); + case 1: + return GetTexture(texture, 0).Translate(new Rect(0, 0, 9, 2)) + + GetTexture(texture, 0).Translate(new Rect(0, 14, 9, 2)); + case 3: + return GetTexture(texture, 0).Translate(new Rect(7, 0, 9, 2)) + + GetTexture(texture, 0).Translate(new Rect(7, 14, 9, 2)); + } + } + else + { + switch (direction) + { + case 0: + case 2: + return GetTexture(texture, 0).Translate(new Rect(0, 7, 16, 2)); + case 1: + case 3: + return GetTexture(texture, 0).Translate(new Rect(7, 0, 2, 16)); + } } return null; @@ -1309,22 +1459,16 @@ private TextureStack RenderTripwireHook(Dictionary data, string Console.WriteLine("Invalid " + texture +" direction"); } - switch (dir) - { - case 0: - return t.Rotate(RotateFlip.Rotate180FlipNone); - case 1: - return t.Rotate(RotateFlip.Rotate270FlipNone); - case 2: - return t.Rotate(RotateFlip.RotateNoneFlipNone); - case 3: - return t.Rotate(RotateFlip.Rotate90FlipNone); - } + t.Rotate(RotateFromDirection(dir)); return t; } private TextureStack RenderPiston (Dictionary data, string prefix) + { + return RenderPiston(prefix, data); + } + private TextureStack RenderPiston (string prefix, Dictionary data) { try { @@ -1341,6 +1485,7 @@ private TextureStack RenderPiston (Dictionary data, string prefi return GetTexture("piston_side", data); } + private TextureStack RenderLever (Dictionary data) { RotateFlip rot = RotateFlip.RotateNoneFlipNone; @@ -1395,6 +1540,48 @@ private TextureStack RenderLever (Dictionary data) return GetTexture("lever", data, trans, rot); } + private TextureStack RenderWall (Dictionary data, string texture) + { + return RenderWall(texture, data); + } + private TextureStack RenderWall (string texture, Dictionary data) + { + TextureStack full = + (int)data.GetValueOrDefault("wall_post_bit", 1) != 0 + ? GetTexture(texture, data).Translate(4, 4, 8, 8) + : GetTexture(texture, data).Translate(5, 5, 6, 6); + + if ((string)data.GetValueOrDefault("wall_connection_type_north", "none") != "none") + { + full = full + GetTexture(texture, data).Translate(5, 0, 6, 6); + } + if ((string)data.GetValueOrDefault("wall_connection_type_east", "none") != "none") + { + full = full + GetTexture(texture, data).Translate(10, 5, 6, 6); + } + if ((string)data.GetValueOrDefault("wall_connection_type_south", "none") != "none") + { + full = full + GetTexture(texture, data).Translate(5, 10, 6, 6); + } + if ((string)data.GetValueOrDefault("wall_connection_type_west", "none") != "none") + { + full = full + GetTexture(texture, data).Translate(0, 5, 6, 6); + } + + return full; + } + + private TextureStack RenderLantern (Dictionary data, string texture) + { + return RenderLantern(texture, data); + } + private TextureStack RenderLantern (string texture, Dictionary data) + { + return GetTexture(texture, data).Translate( + new Rect(0, 0, 6, 9), + new Rect(5, 7, 6, 9)); + } + private TextureStack RenderDripstone (Dictionary data) { string filename = "pointed_dripstone_tip"; @@ -1461,7 +1648,7 @@ private TextureStack RenderGlowLichen (Dictionary data) } catch { - Console.WriteLine("Invalid " + filename +" direction"); + Console.WriteLine("Invalid " + filename + " direction"); } return GetTexture(filename, 0); @@ -1473,42 +1660,94 @@ private TextureStack RenderLightningRod (Dictionary data) try { int dir = (int)data["facing_direction"]; + TextureStack head = GetTexture(filename, 0); switch(dir) { case 0: // intentional fall-through case 1: - return GetTexture(filename, data).Translate(new Rect(0,0,4,4), new Rect(6,6,4,4)); + return head.Translate(new Rect(0,0,4,4), new Rect(6,6,4,4)).Rotate(RotateFlip.Rotate180FlipNone); + } + + head = head.Translate(new Rect(0,0,4,4), new Rect(6,12,4,4)); + TextureStack body = GetTexture(filename, 0).Translate(new Rect(0,4,2,12), new Rect(7,4,2,12)); + switch(dir) + { case 2: - return GetTexture(filename, 0).Translate(new Rect(0,0,4,16), new Rect(6,1,4,15)).Rotate(RotateFlip.RotateNoneFlipNone); + // head rotation is opposite to body + return body.Rotate(RotateFlip.RotateNoneFlipNone) + head.Rotate(RotateFlip.Rotate180FlipNone); case 3: - return GetTexture(filename, 0).Translate(new Rect(0,0,4,16), new Rect(6,1,4,15)).Rotate(RotateFlip.Rotate180FlipNone); + return body.Rotate(RotateFlip.Rotate180FlipNone) + head.Rotate(RotateFlip.RotateNoneFlipNone); case 4: - return GetTexture(filename, 0).Translate(new Rect(0,0,4,16), new Rect(6,1,4,15)).Rotate(RotateFlip.Rotate270FlipNone); + return body.Rotate(RotateFlip.Rotate270FlipNone) + head.Rotate(RotateFlip.Rotate90FlipNone); case 5: - return GetTexture(filename, 0).Translate(new Rect(0,0,4,16), new Rect(6,1,4,15)).Rotate(RotateFlip.Rotate90FlipNone); + return body.Rotate(RotateFlip.Rotate90FlipNone) + head.Rotate(RotateFlip.Rotate270FlipNone); } } catch { - Console.WriteLine("Invalid " + filename +" direction"); + Console.WriteLine("Invalid " + filename + " direction"); } - return GetTexture(filename, data).Translate(new Rect(0,0,4,16), new Rect(6,1,4,15)); + return GetTexture(filename, data).Translate(new Rect(0,0,4,4), new Rect(6,6,4,4)); } - private TextureStack RenderGlowItemFrame (Dictionary data) + private TextureStack RenderEndRod (Dictionary data) { - string filename = "glow_item_frame"; + string filename = "end_rod"; + try + { + int dir = (int)data["facing_direction"]; + switch(dir) + { + case 0: + // down -> base + return GetTexture(filename).Translate(new Rect(2,2,4,4), new Rect(6,6,4,4)); + case 1: + // up -> base + tip + return GetTexture(filename).Translate(new Rect(2,2,4,4), new Rect(6,6,4,4)) + + GetTexture(filename).Translate(new Rect(2,0,2,2), new Rect(7,7,2,2)); + } + + TextureStack head = GetTexture(filename).Translate(new Rect(2,6,4,1), new Rect(6,0,4,1)); + TextureStack body = GetTexture(filename).Translate(new Rect(0,0,2,15), new Rect(7,1,2,15)); + RotateFlip rot = RotateFlip.RotateNoneFlipNone; + switch(dir) + { + case 2: + rot = RotateFlip.RotateNoneFlipNone; break; + case 3: + rot = RotateFlip.Rotate180FlipNone; break; + case 4: + rot = RotateFlip.Rotate270FlipNone; break; + case 5: + rot = RotateFlip.Rotate90FlipNone; break; + } + return body.Rotate(rot) + head.Rotate(rot); + } + catch + { + Console.WriteLine("Invalid " + filename + " direction"); + } + + return GetTexture(filename).Translate(new Rect(2,2,4,4), new Rect(6,6,4,4)); + } + + private TextureStack RenderItemFrame (Dictionary data, string texture) + { + return RenderItemFrame(texture, data); + } + private TextureStack RenderItemFrame (string texture, Dictionary data) + { try { int dir = (int)data["facing_direction"]; if((dir != 0) && (dir != 1)) { - var t = GetTexture(filename, 0).Translate( + var t = GetTexture(texture, 0).Translate( new Rect(0, 7, 14, 2), new Rect(1, 0, 14, 2) ); @@ -1527,15 +1766,19 @@ private TextureStack RenderGlowItemFrame (Dictionary data) } catch { - Console.WriteLine("Invalid " + filename +" direction"); + Console.WriteLine("Invalid " + texture + " direction"); } - return GetTexture(filename, data); + return GetTexture(texture, data); } - private TextureStack RenderAmethystCluster (string filename, Dictionary data) + private TextureStack RenderAmethystCluster (Dictionary data, string texture) + { + return RenderAmethystCluster(texture, data); + } + private TextureStack RenderAmethystCluster (string texture, Dictionary data) { - TextureStack t = GetTexture(filename, data); + TextureStack t = GetTexture(texture, data); try { int dir = (int)data["facing_direction"]; @@ -1546,7 +1789,7 @@ private TextureStack RenderAmethystCluster (string filename, Dictionary data) { - int dir = (int)data["direction"]; - TextureStack t = GetTexture("small_dripleaf_top", data); + t.Rotate(RotateFromDirection(data)); + return t; + } + + private TextureStack RenderPressurePlate (Dictionary data, string texture) + { + return RenderPressurePlate(texture, data); + } + private TextureStack RenderPressurePlate (string texture, Dictionary data) + { + return GetTexture(texture).Translate(1, 1, 14, 14); + } - switch (dir) + private TextureStack RenderPillar (string texture_both, Dictionary data) + { + return RenderPillar(texture_both, texture_both, data); + } + private TextureStack RenderPillar (string texture_top, string texture_side, Dictionary data) + { + string axis = (string)data.GetValueOrDefault("pillar_axis", "y"); + RotateFlip rotation = + axis == "x" ? RotateFlip.Rotate90FlipNone : RotateFlip.RotateNoneFlipNone; + return GetTexture(axis == "y" ? texture_top : texture_side, data, null, rotation); + } + + private RotateFlip RotateFromDirection (Dictionary data) + { + return RotateFromDirection((int)data["direction"]); + } + private RotateFlip RotateFromDirection (int direction) + { + switch (Math.Abs(direction % 4)) { case 0: - return t.Rotate(RotateFlip.Rotate180FlipNone); + return RotateFlip.Rotate180FlipNone; case 1: - return t.Rotate(RotateFlip.Rotate270FlipNone); + return RotateFlip.Rotate270FlipNone; case 2: - return t.Rotate(RotateFlip.RotateNoneFlipNone); + return RotateFlip.RotateNoneFlipNone; case 3: - return t.Rotate(RotateFlip.Rotate90FlipNone); + return RotateFlip.Rotate90FlipNone; } - - return t; + return RotateFlip.RotateNoneFlipNone; } public Dictionary Cache { get; } = new Dictionary(); @@ -1689,6 +1959,158 @@ private TextureStack CreateTexture(string texturePath) {"undyed", 16}, }; + static private readonly Dictionary CobblestoneWallIndexes = new Dictionary() + { + {"cobblestone", 0}, + {"mossy_cobblestone", 1}, + {"granite", 2}, + {"diorite", 3}, + {"andesite", 4}, + {"sandstone", 5}, + {"brick", 6}, + {"stone_brick", 7}, + {"mossy_stone_brick", 8}, + {"nether_brick", 9}, + {"end_brick", 10}, + {"prismarine", 11}, + {"red_sandstone", 12}, + {"red_nether_brick", 13}, + }; + + static private readonly Dictionary WoodIndexes = new Dictionary() + { + {"oak", 0}, + {"spruce", 1}, + {"birch", 2}, + {"jungle", 3}, + {"acacia", 4}, + {"dark_oak", 5}, + }; + + static private readonly Dictionary> StoneSlabIndexes = new Dictionary>() + { + {1, new Dictionary() { + {"smooth_stone", 0}, + {"sandstone", 1}, + // {"planks"?, 2}, + {"cobblestone", 3}, + {"brick", 4}, + {"stone_brick", 5}, + {"quartz", 6}, + {"nether_brick", 7}, + }}, + {2, new Dictionary() { + {"red_sandstone", 0}, + {"purpur", 1}, + {"prismarine_rough", 2}, + {"prismarine_dark", 3}, + {"prismarine_brick", 4}, + {"mossy_cobblestone", 5}, + {"smooth_sandstone", 6}, + {"red_nether_brick", 7}, + }}, + {3, new Dictionary() { + {"end_stone_brick", 0}, + {"smooth_red_sandstone", 1}, + {"polished_andesite", 2}, + {"andesite", 3}, + {"diorite", 4}, + {"polished_diorite", 5}, + {"granite", 6}, + {"polished_granite", 7}, + }}, + {4, new Dictionary() { + {"mossy_stone_brick", 0}, + {"smooth_quartz", 1}, + {"stone", 2}, + {"cut_sandstone", 3}, + {"cut_red_sandstone", 4}, + }}, + }; + + static private readonly Dictionary StoneIndexes = new Dictionary() + { + {"stone", 0}, + {"granite", 1}, + {"granite_smooth", 2}, + {"diorite", 3}, + {"diorite_smooth", 4}, + {"andesite", 5}, + {"andesite_smooth", 6}, + }; + + static private readonly Dictionary MonsterEggIndexes = new Dictionary() + { + {"cobblestone", 0}, + {"stone_brick", 1}, + {"mossy_stone_brick", 2}, + {"cracked_stone_brick", 3}, + {"chiseled_stone_brick", 4}, + {"stone", 5}, + }; + + static private readonly Dictionary StoneBrickIndexes = new Dictionary() + { + {"default", 0}, + {"mossy", 1}, + {"cracked", 2}, + {"chiseled", 3}, + }; + + static private readonly Dictionary GrowthEightToFour = new Dictionary() + { + {0, 0}, + {1, 0}, + {2, 1}, + {3, 1}, + {4, 2}, + {5, 2}, + {6, 2}, + {7, 3}, + }; + + static private readonly Dictionary RedFlowerIndexes = new Dictionary() + { + {"poppy", 0}, + {"orchid", 1}, + {"allium", 2}, + {"houstonia", 3}, + {"tulip_red", 4}, + {"tulip_orange", 5}, + {"tulip_white", 6}, + {"tulip_pink", 7}, + {"oxeye", 8}, + {"cornflower", 9}, + {"lily_of_the_valley", 10}, + }; + + static private readonly Dictionary DoublePlantIndexes = new Dictionary() + { + {"sunflower", 0}, + {"syringa", 1}, + {"grass", 2}, + {"fern", 3}, + {"rose", 4}, + {"paeonia", 5}, + }; + + static private readonly Dictionary CoralIndexes = new Dictionary() + { + {"blue", 0}, + {"pink", 1}, + {"purple", 2}, + {"red", 3}, + {"yellow", 4}, + }; + + static private readonly Dictionary CoralRotations = new Dictionary() + { + {0, RotateFlip.Rotate270FlipNone}, + {1, RotateFlip.Rotate90FlipNone}, + {2, RotateFlip.RotateNoneFlipNone}, + {3, RotateFlip.Rotate180FlipNone}, + }; + private TextureStack GetTexture(string name, int data = 0, TextureTranslation translation = null, RotateFlip rot = RotateFlip.RotateNoneFlipNone) { var dictData = new Dictionary(); @@ -1728,6 +2150,20 @@ private TextureStack GetTexture(string name, Dictionary data, Te Console.WriteLine("Cannot find color for " + name); } } + if(blockProperties.Key == "wall_block_type") + { + int wallBlockIndex = CobblestoneWallIndexes.First().Value; + try + { + string wallBlock = (string)data["wall_block_type"]; + wallBlockIndex = CobblestoneWallIndexes[wallBlock]; + texturePath = texture.Subtextures[wallBlockIndex].Path; + } + catch + { + Console.WriteLine("Cannot find wall type for " + name); + } + } if(blockProperties.Key == "facing_direction") { int direction = (int)data["facing_direction"]; diff --git a/Maploader/World/World.cs b/Maploader/World/World.cs index c8a913c..9a9ea0b 100644 --- a/Maploader/World/World.cs +++ b/Maploader/World/World.cs @@ -430,26 +430,14 @@ private static (string, Dictionary) GetNbtVal(MemoryStream ms) IEnumerable enumTag = (IEnumerable)tag; foreach(var subtag in enumTag) { - if((subtag.Name == "direction") || (subtag.Name == "facing_direction") || (subtag.Name == "open_bit") || (subtag.Name == "multi_face_direction_bits")) + if((subtag.Name == "direction") || (subtag.Name == "facing_direction") || (subtag.Name == "open_bit") || (subtag.Name == "multi_face_direction_bits") || (subtag.Name == "stripped_bit") || (subtag.Name == "wall_post_bit") || (subtag.Name == "button_pressed_bit") || (subtag.Name == "rail_direction") || (subtag.Name == "rail_data_bit") || (subtag.Name == "bite_counter") || (subtag.Name == "respawn_anchor_charge") || (subtag.Name == "growth") || (subtag.Name == "powered_bit") || (subtag.Name == "upper_block_bit") || (subtag.Name == "hanging") || (subtag.Name == "coral_direction") || (subtag.Name == "coral_hang_type_bit") || (subtag.Name == "dead_bit") || (subtag.Name == "end_portal_eye_bit") || (subtag.Name == "head_piece_bit") || (subtag.Name == "age")) { int subtagvalue = GetTagValue(subtag); dictParams.Add(subtag.Name, subtagvalue); } - if((subtag.Name == "color") || (subtag.Name == "lever_direction")) + if((subtag.Name == "color") || (subtag.Name == "lever_direction") || (subtag.Name == "wall_block_type") || (subtag.Name == "pillar_axis") || (subtag.Name == "wood_type") || (subtag.Name == "old_log_type") || (subtag.Name == "new_log_type") || (subtag.Name == "old_leaf_type") || (subtag.Name == "new_leaf_type") || (subtag.Name == "sapling_type") || subtag.Name.StartsWith("wall_connection_type_") || (subtag.Name == "chisel_type") || subtag.Name.StartsWith("stone_slab_type") || (subtag.Name == "sponge_type") || (subtag.Name == "double_plant_type") || (subtag.Name == "flower_type") || (subtag.Name == "sand_type") || (subtag.Name == "stone_type") || (subtag.Name == "damage") || (subtag.Name == "dripstone_thickness") || (subtag.Name == "coral_color") || (subtag.Name == "monster_egg_stone_type") || (subtag.Name == "stone_brick_type")) { - if(subtag.TagType == NbtTagType.String) - { - dictParams.Add(subtag.Name, subtag.StringValue); - } - } - if(subtag.Name == "dripstone_thickness") - { - dictParams.Add(subtag.Name, subtag.StringValue); - } - if(subtag.Name == "hanging") - { - int subtagvalue = GetTagValue(subtag); - dictParams.Add(subtag.Name, subtagvalue); + dictParams.Add(subtag.Name, subtag.StringValue); } } break; diff --git a/PapyrusCs/PapyrusCs.csproj b/PapyrusCs/PapyrusCs.csproj index fba45ce..8110cf5 100644 --- a/PapyrusCs/PapyrusCs.csproj +++ b/PapyrusCs/PapyrusCs.csproj @@ -60,9 +60,18 @@ PreserveNewest + + PreserveNewest + PreserveNewest + + PreserveNewest + + + PreserveNewest + PreserveNewest @@ -81,6 +90,27 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + PreserveNewest @@ -189,6 +219,18 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + PreserveNewest @@ -288,6 +330,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -315,6 +360,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -381,6 +429,18 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + PreserveNewest @@ -624,6 +684,12 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + PreserveNewest @@ -747,6 +813,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -777,6 +846,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -885,6 +957,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -939,6 +1014,12 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + PreserveNewest @@ -972,6 +1053,12 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + PreserveNewest @@ -1203,12 +1290,21 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + PreserveNewest PreserveNewest + + PreserveNewest + PreserveNewest @@ -1245,6 +1341,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -1323,54 +1422,6 @@ PreserveNewest - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - - - PreserveNewest - PreserveNewest @@ -1443,6 +1494,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -1521,6 +1575,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -1578,6 +1635,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -1596,6 +1656,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -1620,6 +1683,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -1644,9 +1710,6 @@ PreserveNewest - - PreserveNewest - PreserveNewest @@ -1668,6 +1731,12 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + PreserveNewest @@ -1701,6 +1770,36 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + PreserveNewest @@ -1731,6 +1830,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -1788,7 +1890,7 @@ PreserveNewest - + PreserveNewest @@ -1818,6 +1920,15 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + PreserveNewest @@ -2055,6 +2166,21 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + PreserveNewest @@ -2082,6 +2208,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -2115,6 +2244,12 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + PreserveNewest @@ -2268,6 +2403,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -2292,6 +2430,9 @@ PreserveNewest + + PreserveNewest + PreserveNewest @@ -2349,6 +2490,12 @@ PreserveNewest + + PreserveNewest + + + PreserveNewest + PreserveNewest @@ -2430,7 +2577,103 @@ PreserveNewest - + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + + PreserveNewest + + PreserveNewest diff --git a/textures/blocks/amethyst_block.png b/textures/blocks/amethyst_block.png new file mode 100644 index 0000000..4e3e8b1 Binary files /dev/null and b/textures/blocks/amethyst_block.png differ diff --git a/textures/blocks/amethyst_cluster.png b/textures/blocks/amethyst_cluster.png new file mode 100644 index 0000000..c928f20 Binary files /dev/null and b/textures/blocks/amethyst_cluster.png differ diff --git a/textures/blocks/azalea_leaves.png b/textures/blocks/azalea_leaves.png new file mode 100644 index 0000000..7eff9b1 Binary files /dev/null and b/textures/blocks/azalea_leaves.png differ diff --git a/textures/blocks/azalea_leaves_flowers.png b/textures/blocks/azalea_leaves_flowers.png new file mode 100644 index 0000000..2de12a3 Binary files /dev/null and b/textures/blocks/azalea_leaves_flowers.png differ diff --git a/textures/blocks/azalea_leaves_flowers_opaque.png b/textures/blocks/azalea_leaves_flowers_opaque.png new file mode 100644 index 0000000..3f68432 Binary files /dev/null and b/textures/blocks/azalea_leaves_flowers_opaque.png differ diff --git a/textures/blocks/azalea_leaves_opaque.png b/textures/blocks/azalea_leaves_opaque.png new file mode 100644 index 0000000..d3c0a84 Binary files /dev/null and b/textures/blocks/azalea_leaves_opaque.png differ diff --git a/textures/blocks/azalea_plant.png b/textures/blocks/azalea_plant.png new file mode 100644 index 0000000..74d5a97 Binary files /dev/null and b/textures/blocks/azalea_plant.png differ diff --git a/textures/blocks/azalea_side.png b/textures/blocks/azalea_side.png new file mode 100644 index 0000000..43b8ec0 Binary files /dev/null and b/textures/blocks/azalea_side.png differ diff --git a/textures/blocks/azalea_top.png b/textures/blocks/azalea_top.png new file mode 100644 index 0000000..0449fb0 Binary files /dev/null and b/textures/blocks/azalea_top.png differ diff --git a/textures/blocks/big_dripleaf_side1.png b/textures/blocks/big_dripleaf_side1.png new file mode 100644 index 0000000..f596e32 Binary files /dev/null and b/textures/blocks/big_dripleaf_side1.png differ diff --git a/textures/blocks/big_dripleaf_side2.png b/textures/blocks/big_dripleaf_side2.png new file mode 100644 index 0000000..5f42e9a Binary files /dev/null and b/textures/blocks/big_dripleaf_side2.png differ diff --git a/textures/blocks/big_dripleaf_stem.png b/textures/blocks/big_dripleaf_stem.png new file mode 100644 index 0000000..56b1aee Binary files /dev/null and b/textures/blocks/big_dripleaf_stem.png differ diff --git a/textures/blocks/big_dripleaf_top.png b/textures/blocks/big_dripleaf_top.png new file mode 100644 index 0000000..f697484 Binary files /dev/null and b/textures/blocks/big_dripleaf_top.png differ diff --git a/textures/blocks/blackstone.png b/textures/blocks/blackstone.png index bbfdb4d..5f94c21 100644 Binary files a/textures/blocks/blackstone.png and b/textures/blocks/blackstone.png differ diff --git a/textures/blocks/budding_amethyst.png b/textures/blocks/budding_amethyst.png new file mode 100644 index 0000000..edde805 Binary files /dev/null and b/textures/blocks/budding_amethyst.png differ diff --git a/textures/blocks/calcite.png b/textures/blocks/calcite.png new file mode 100644 index 0000000..4c2b0dd Binary files /dev/null and b/textures/blocks/calcite.png differ diff --git a/textures/blocks/cave_vines_body.png b/textures/blocks/cave_vines_body.png new file mode 100644 index 0000000..8a49030 Binary files /dev/null and b/textures/blocks/cave_vines_body.png differ diff --git a/textures/blocks/cave_vines_body_berries.png b/textures/blocks/cave_vines_body_berries.png new file mode 100644 index 0000000..4a9b807 Binary files /dev/null and b/textures/blocks/cave_vines_body_berries.png differ diff --git a/textures/blocks/cave_vines_head.png b/textures/blocks/cave_vines_head.png new file mode 100644 index 0000000..7120939 Binary files /dev/null and b/textures/blocks/cave_vines_head.png differ diff --git a/textures/blocks/cave_vines_head_berries.png b/textures/blocks/cave_vines_head_berries.png new file mode 100644 index 0000000..1c8de2a Binary files /dev/null and b/textures/blocks/cave_vines_head_berries.png differ diff --git a/textures/blocks/coal_ore.png b/textures/blocks/coal_ore.png index c5250f0..2a21d2b 100644 Binary files a/textures/blocks/coal_ore.png and b/textures/blocks/coal_ore.png differ diff --git a/textures/blocks/copper_block.png b/textures/blocks/copper_block.png new file mode 100644 index 0000000..f7ce8b4 Binary files /dev/null and b/textures/blocks/copper_block.png differ diff --git a/textures/blocks/copper_ore.png b/textures/blocks/copper_ore.png new file mode 100644 index 0000000..c7aea0c Binary files /dev/null and b/textures/blocks/copper_ore.png differ diff --git a/textures/blocks/cut_copper.png b/textures/blocks/cut_copper.png new file mode 100644 index 0000000..cdb7f23 Binary files /dev/null and b/textures/blocks/cut_copper.png differ diff --git a/textures/blocks/deepslate/chiseled_deepslate.png b/textures/blocks/deepslate/chiseled_deepslate.png new file mode 100644 index 0000000..b8a7014 Binary files /dev/null and b/textures/blocks/deepslate/chiseled_deepslate.png differ diff --git a/textures/blocks/deepslate/cobbled_deepslate.png b/textures/blocks/deepslate/cobbled_deepslate.png new file mode 100644 index 0000000..50fe34e Binary files /dev/null and b/textures/blocks/deepslate/cobbled_deepslate.png differ diff --git a/textures/blocks/deepslate/cracked_deepslate_bricks.png b/textures/blocks/deepslate/cracked_deepslate_bricks.png new file mode 100644 index 0000000..7f8f833 Binary files /dev/null and b/textures/blocks/deepslate/cracked_deepslate_bricks.png differ diff --git a/textures/blocks/deepslate/cracked_deepslate_tiles.png b/textures/blocks/deepslate/cracked_deepslate_tiles.png new file mode 100644 index 0000000..b17d116 Binary files /dev/null and b/textures/blocks/deepslate/cracked_deepslate_tiles.png differ diff --git a/textures/blocks/deepslate/deepslate.png b/textures/blocks/deepslate/deepslate.png new file mode 100644 index 0000000..b07b09d Binary files /dev/null and b/textures/blocks/deepslate/deepslate.png differ diff --git a/textures/blocks/deepslate/deepslate_bricks.png b/textures/blocks/deepslate/deepslate_bricks.png new file mode 100644 index 0000000..2cf2a17 Binary files /dev/null and b/textures/blocks/deepslate/deepslate_bricks.png differ diff --git a/textures/blocks/deepslate/deepslate_coal_ore.png b/textures/blocks/deepslate/deepslate_coal_ore.png new file mode 100644 index 0000000..3b9768c Binary files /dev/null and b/textures/blocks/deepslate/deepslate_coal_ore.png differ diff --git a/textures/blocks/deepslate/deepslate_copper_ore.png b/textures/blocks/deepslate/deepslate_copper_ore.png new file mode 100644 index 0000000..6dc547d Binary files /dev/null and b/textures/blocks/deepslate/deepslate_copper_ore.png differ diff --git a/textures/blocks/deepslate/deepslate_diamond_ore.png b/textures/blocks/deepslate/deepslate_diamond_ore.png new file mode 100644 index 0000000..86772d0 Binary files /dev/null and b/textures/blocks/deepslate/deepslate_diamond_ore.png differ diff --git a/textures/blocks/deepslate/deepslate_emerald_ore.png b/textures/blocks/deepslate/deepslate_emerald_ore.png new file mode 100644 index 0000000..31720fd Binary files /dev/null and b/textures/blocks/deepslate/deepslate_emerald_ore.png differ diff --git a/textures/blocks/deepslate/deepslate_gold_ore.png b/textures/blocks/deepslate/deepslate_gold_ore.png new file mode 100644 index 0000000..be52acb Binary files /dev/null and b/textures/blocks/deepslate/deepslate_gold_ore.png differ diff --git a/textures/blocks/deepslate/deepslate_iron_ore.png b/textures/blocks/deepslate/deepslate_iron_ore.png new file mode 100644 index 0000000..96c170e Binary files /dev/null and b/textures/blocks/deepslate/deepslate_iron_ore.png differ diff --git a/textures/blocks/deepslate/deepslate_lapis_ore.png b/textures/blocks/deepslate/deepslate_lapis_ore.png new file mode 100644 index 0000000..0e9c8cc Binary files /dev/null and b/textures/blocks/deepslate/deepslate_lapis_ore.png differ diff --git a/textures/blocks/deepslate/deepslate_redstone_ore.png b/textures/blocks/deepslate/deepslate_redstone_ore.png new file mode 100644 index 0000000..6a1419a Binary files /dev/null and b/textures/blocks/deepslate/deepslate_redstone_ore.png differ diff --git a/textures/blocks/deepslate/deepslate_tiles.png b/textures/blocks/deepslate/deepslate_tiles.png new file mode 100644 index 0000000..7eebeb6 Binary files /dev/null and b/textures/blocks/deepslate/deepslate_tiles.png differ diff --git a/textures/blocks/deepslate/deepslate_top.png b/textures/blocks/deepslate/deepslate_top.png new file mode 100644 index 0000000..2569e50 Binary files /dev/null and b/textures/blocks/deepslate/deepslate_top.png differ diff --git a/textures/blocks/deepslate/polished_deepslate.png b/textures/blocks/deepslate/polished_deepslate.png new file mode 100644 index 0000000..dfcf750 Binary files /dev/null and b/textures/blocks/deepslate/polished_deepslate.png differ diff --git a/textures/blocks/diamond_ore.png b/textures/blocks/diamond_ore.png index bd8b4bc..5182e1c 100644 Binary files a/textures/blocks/diamond_ore.png and b/textures/blocks/diamond_ore.png differ diff --git a/textures/blocks/dirt_with_roots.png b/textures/blocks/dirt_with_roots.png new file mode 100644 index 0000000..b28f0a3 Binary files /dev/null and b/textures/blocks/dirt_with_roots.png differ diff --git a/textures/blocks/dripstone_block.png b/textures/blocks/dripstone_block.png new file mode 100644 index 0000000..c3fbb5b Binary files /dev/null and b/textures/blocks/dripstone_block.png differ diff --git a/textures/blocks/emerald_ore.png b/textures/blocks/emerald_ore.png index ae4c835..425191c 100644 Binary files a/textures/blocks/emerald_ore.png and b/textures/blocks/emerald_ore.png differ diff --git a/textures/blocks/exposed_copper.png b/textures/blocks/exposed_copper.png new file mode 100644 index 0000000..d265f4b Binary files /dev/null and b/textures/blocks/exposed_copper.png differ diff --git a/textures/blocks/exposed_cut_copper.png b/textures/blocks/exposed_cut_copper.png new file mode 100644 index 0000000..b8d527c Binary files /dev/null and b/textures/blocks/exposed_cut_copper.png differ diff --git a/textures/blocks/flowering_azalea_side.png b/textures/blocks/flowering_azalea_side.png new file mode 100644 index 0000000..c61e516 Binary files /dev/null and b/textures/blocks/flowering_azalea_side.png differ diff --git a/textures/blocks/flowering_azalea_top.png b/textures/blocks/flowering_azalea_top.png new file mode 100644 index 0000000..921bb8f Binary files /dev/null and b/textures/blocks/flowering_azalea_top.png differ diff --git a/textures/blocks/gilded_blackstone.png b/textures/blocks/gilded_blackstone.png index 6764425..db5c616 100644 Binary files a/textures/blocks/gilded_blackstone.png and b/textures/blocks/gilded_blackstone.png differ diff --git a/textures/blocks/glow_item_frame.png b/textures/blocks/glow_item_frame.png new file mode 100644 index 0000000..633e567 Binary files /dev/null and b/textures/blocks/glow_item_frame.png differ diff --git a/textures/blocks/glow_lichen.png b/textures/blocks/glow_lichen.png new file mode 100644 index 0000000..d6fd870 Binary files /dev/null and b/textures/blocks/glow_lichen.png differ diff --git a/textures/blocks/gold_ore.png b/textures/blocks/gold_ore.png index 9a96501..cb1c9cc 100644 Binary files a/textures/blocks/gold_ore.png and b/textures/blocks/gold_ore.png differ diff --git a/textures/blocks/grass_block_snow.png b/textures/blocks/grass_block_snow.png new file mode 100644 index 0000000..5fe3e02 Binary files /dev/null and b/textures/blocks/grass_block_snow.png differ diff --git a/textures/blocks/hanging_roots.png b/textures/blocks/hanging_roots.png new file mode 100644 index 0000000..5aae89e Binary files /dev/null and b/textures/blocks/hanging_roots.png differ diff --git a/textures/blocks/iron_ore.png b/textures/blocks/iron_ore.png index 6484177..8fa6857 100644 Binary files a/textures/blocks/iron_ore.png and b/textures/blocks/iron_ore.png differ diff --git a/textures/blocks/lapis_ore.png b/textures/blocks/lapis_ore.png index 24ffcba..7c212c3 100644 Binary files a/textures/blocks/lapis_ore.png and b/textures/blocks/lapis_ore.png differ diff --git a/textures/blocks/large_amethyst_bud.png b/textures/blocks/large_amethyst_bud.png new file mode 100644 index 0000000..337f13d Binary files /dev/null and b/textures/blocks/large_amethyst_bud.png differ diff --git a/textures/blocks/lightning_rod.png b/textures/blocks/lightning_rod.png new file mode 100644 index 0000000..5c9a13d Binary files /dev/null and b/textures/blocks/lightning_rod.png differ diff --git a/textures/blocks/medium_amethyst_bud.png b/textures/blocks/medium_amethyst_bud.png new file mode 100644 index 0000000..a0f84f0 Binary files /dev/null and b/textures/blocks/medium_amethyst_bud.png differ diff --git a/textures/blocks/moss_block.png b/textures/blocks/moss_block.png new file mode 100644 index 0000000..c949c37 Binary files /dev/null and b/textures/blocks/moss_block.png differ diff --git a/textures/blocks/oxidized_copper.png b/textures/blocks/oxidized_copper.png new file mode 100644 index 0000000..0ad69bc Binary files /dev/null and b/textures/blocks/oxidized_copper.png differ diff --git a/textures/blocks/oxidized_cut_copper.png b/textures/blocks/oxidized_cut_copper.png new file mode 100644 index 0000000..7da2ce3 Binary files /dev/null and b/textures/blocks/oxidized_cut_copper.png differ diff --git a/textures/blocks/pointed_dripstone_down_base.png b/textures/blocks/pointed_dripstone_down_base.png new file mode 100644 index 0000000..b3d97cb Binary files /dev/null and b/textures/blocks/pointed_dripstone_down_base.png differ diff --git a/textures/blocks/pointed_dripstone_down_frustum.png b/textures/blocks/pointed_dripstone_down_frustum.png new file mode 100644 index 0000000..1cd4515 Binary files /dev/null and b/textures/blocks/pointed_dripstone_down_frustum.png differ diff --git a/textures/blocks/pointed_dripstone_down_merge.png b/textures/blocks/pointed_dripstone_down_merge.png new file mode 100644 index 0000000..38620f5 Binary files /dev/null and b/textures/blocks/pointed_dripstone_down_merge.png differ diff --git a/textures/blocks/pointed_dripstone_down_middle.png b/textures/blocks/pointed_dripstone_down_middle.png new file mode 100644 index 0000000..f49ffd3 Binary files /dev/null and b/textures/blocks/pointed_dripstone_down_middle.png differ diff --git a/textures/blocks/pointed_dripstone_down_tip.png b/textures/blocks/pointed_dripstone_down_tip.png new file mode 100644 index 0000000..91f73b3 Binary files /dev/null and b/textures/blocks/pointed_dripstone_down_tip.png differ diff --git a/textures/blocks/pointed_dripstone_up_base.png b/textures/blocks/pointed_dripstone_up_base.png new file mode 100644 index 0000000..86e7f40 Binary files /dev/null and b/textures/blocks/pointed_dripstone_up_base.png differ diff --git a/textures/blocks/pointed_dripstone_up_frustum.png b/textures/blocks/pointed_dripstone_up_frustum.png new file mode 100644 index 0000000..e90a9f4 Binary files /dev/null and b/textures/blocks/pointed_dripstone_up_frustum.png differ diff --git a/textures/blocks/pointed_dripstone_up_merge.png b/textures/blocks/pointed_dripstone_up_merge.png new file mode 100644 index 0000000..0cb03ad Binary files /dev/null and b/textures/blocks/pointed_dripstone_up_merge.png differ diff --git a/textures/blocks/pointed_dripstone_up_middle.png b/textures/blocks/pointed_dripstone_up_middle.png new file mode 100644 index 0000000..eb66e9b Binary files /dev/null and b/textures/blocks/pointed_dripstone_up_middle.png differ diff --git a/textures/blocks/pointed_dripstone_up_tip.png b/textures/blocks/pointed_dripstone_up_tip.png new file mode 100644 index 0000000..9c702a7 Binary files /dev/null and b/textures/blocks/pointed_dripstone_up_tip.png differ diff --git a/textures/blocks/powder_snow.png b/textures/blocks/powder_snow.png new file mode 100644 index 0000000..f6c2279 Binary files /dev/null and b/textures/blocks/powder_snow.png differ diff --git a/textures/blocks/raw_copper_block.png b/textures/blocks/raw_copper_block.png new file mode 100644 index 0000000..204a822 Binary files /dev/null and b/textures/blocks/raw_copper_block.png differ diff --git a/textures/blocks/raw_gold_block.png b/textures/blocks/raw_gold_block.png new file mode 100644 index 0000000..57472f7 Binary files /dev/null and b/textures/blocks/raw_gold_block.png differ diff --git a/textures/blocks/raw_iron_block.png b/textures/blocks/raw_iron_block.png new file mode 100644 index 0000000..e99a2b3 Binary files /dev/null and b/textures/blocks/raw_iron_block.png differ diff --git a/textures/blocks/redstone_ore.png b/textures/blocks/redstone_ore.png index c68c77c..b708697 100644 Binary files a/textures/blocks/redstone_ore.png and b/textures/blocks/redstone_ore.png differ diff --git a/textures/blocks/small_amethyst_bud.png b/textures/blocks/small_amethyst_bud.png new file mode 100644 index 0000000..443c2d2 Binary files /dev/null and b/textures/blocks/small_amethyst_bud.png differ diff --git a/textures/blocks/small_dripleaf_side.png b/textures/blocks/small_dripleaf_side.png new file mode 100644 index 0000000..28b09da Binary files /dev/null and b/textures/blocks/small_dripleaf_side.png differ diff --git a/textures/blocks/small_dripleaf_stem_bottom.png b/textures/blocks/small_dripleaf_stem_bottom.png new file mode 100644 index 0000000..5a3b9e6 Binary files /dev/null and b/textures/blocks/small_dripleaf_stem_bottom.png differ diff --git a/textures/blocks/small_dripleaf_stem_top.png b/textures/blocks/small_dripleaf_stem_top.png new file mode 100644 index 0000000..596a02c Binary files /dev/null and b/textures/blocks/small_dripleaf_stem_top.png differ diff --git a/textures/blocks/small_dripleaf_top.png b/textures/blocks/small_dripleaf_top.png new file mode 100644 index 0000000..34efa1f Binary files /dev/null and b/textures/blocks/small_dripleaf_top.png differ diff --git a/textures/blocks/smoker_top.png b/textures/blocks/smoker_top.png index 439b8c5..4b5e280 100644 Binary files a/textures/blocks/smoker_top.png and b/textures/blocks/smoker_top.png differ diff --git a/textures/blocks/smooth_basalt.png b/textures/blocks/smooth_basalt.png new file mode 100644 index 0000000..56daac9 Binary files /dev/null and b/textures/blocks/smooth_basalt.png differ diff --git a/textures/blocks/spore_blossom.png b/textures/blocks/spore_blossom.png new file mode 100644 index 0000000..164bd29 Binary files /dev/null and b/textures/blocks/spore_blossom.png differ diff --git a/textures/blocks/spore_blossom_base.png b/textures/blocks/spore_blossom_base.png new file mode 100644 index 0000000..5edd86b Binary files /dev/null and b/textures/blocks/spore_blossom_base.png differ diff --git a/textures/blocks/tinted_glass.png b/textures/blocks/tinted_glass.png new file mode 100644 index 0000000..cd1dd46 Binary files /dev/null and b/textures/blocks/tinted_glass.png differ diff --git a/textures/blocks/tuff.png b/textures/blocks/tuff.png new file mode 100644 index 0000000..0880433 Binary files /dev/null and b/textures/blocks/tuff.png differ diff --git a/textures/blocks/weathered_copper.png b/textures/blocks/weathered_copper.png new file mode 100644 index 0000000..10d24e1 Binary files /dev/null and b/textures/blocks/weathered_copper.png differ diff --git a/textures/blocks/weathered_cut_copper.png b/textures/blocks/weathered_cut_copper.png new file mode 100644 index 0000000..8d9ed40 Binary files /dev/null and b/textures/blocks/weathered_cut_copper.png differ diff --git a/textures/terrain_texture.json b/textures/terrain_texture.json index 5b11743..ff478bb 100644 --- a/textures/terrain_texture.json +++ b/textures/terrain_texture.json @@ -12,6 +12,12 @@ "acacia_trapdoor" : { "textures" : "textures/blocks/acacia_trapdoor" }, + "amethyst_block" : { + "textures" : "textures/blocks/amethyst_block" + }, + "amethyst_cluster" : { + "textures" : "textures/blocks/amethyst_cluster" + }, "ancient_debris_side" : { "textures" : "textures/blocks/ancient_debris_side" }, @@ -37,6 +43,27 @@ "textures/blocks/anvil_base" ] }, + "azalea_leaves" : { + "textures" : [ + "textures/blocks/azalea_leaves", + "textures/blocks/azalea_leaves_opaque" + ] + }, + "azalea_leaves_flowered" : { + "textures" : [ + "textures/blocks/azalea_leaves_flowers", + "textures/blocks/azalea_leaves_flowers_opaque" + ] + }, + "azalea_plant" : { + "textures" : "textures/blocks/azalea_plant" + }, + "azalea_side" : { + "textures" : "textures/blocks/azalea_side" + }, + "azalea_top" : { + "textures" : "textures/blocks/azalea_top" + }, "bamboo_carried" : { "textures" : "textures/items/bamboo" }, @@ -141,6 +168,18 @@ "bell_top" : { "textures" : "textures/blocks/bell_top" }, + "big_dripleaf_side1" : { + "textures" : "textures/blocks/big_dripleaf_side1" + }, + "big_dripleaf_side2" : { + "textures" : "textures/blocks/big_dripleaf_side2" + }, + "big_dripleaf_stem" : { + "textures" : "textures/blocks/big_dripleaf_stem" + }, + "big_dripleaf_top" : { + "textures" : "textures/blocks/big_dripleaf_top" + }, "birch_planks" : { "textures" : "textures/blocks/planks_birch" }, @@ -191,21 +230,12 @@ "textures/blocks/blast_furnace_top" ] }, - "soul_fire_0" : { - "textures" : "textures/blocks/soul_fire_0" - }, - "soul_fire_1" : { - "textures" : "textures/blocks/soul_fire_1" - }, "blue_glazed_terracotta" : { "textures" : "textures/blocks/glazed_terracotta_blue" }, "blue_ice" : { "textures" : "textures/blocks/blue_ice" }, - "warped_wart_block" : { - "textures" : [ "textures/blocks/warped_wart_block" ] - }, "bone_block_side" : { "textures" : "textures/blocks/bone_block_side" }, @@ -267,6 +297,9 @@ "textures/blocks/bubble_column_up_top_d" ] }, + "budding_amethyst" : { + "textures" : "textures/blocks/budding_amethyst" + }, "build_allow" : { "textures" : "textures/blocks/build_allow" }, @@ -294,6 +327,9 @@ "cake_west" : { "textures" : [ "textures/blocks/cake_side", "textures/blocks/cake_inner" ] }, + "calcite" : { + "textures" : "textures/blocks/calcite" + }, "camera_back" : { "textures" : "textures/blocks/camera_back" }, @@ -353,6 +389,18 @@ "cauldron_water" : { "textures" : "textures/blocks/cauldron_water" }, + "cave_vines_body" : { + "textures" : [ + "textures/blocks/cave_vines_body", + "textures/blocks/cave_vines_body_berries" + ] + }, + "cave_vines_head" : { + "textures" : [ + "textures/blocks/cave_vines_head", + "textures/blocks/cave_vines_head_berries" + ] + }, "chain1" : { "textures" : "textures/blocks/chain1" }, @@ -375,6 +423,9 @@ "chest_inventory_top" : { "textures" : [ "textures/blocks/chest_top" ] }, + "chiseled_deepslate" : { + "textures" : "textures/blocks/deepslate/chiseled_deepslate" + }, "chiseled_nether_bricks" : { "textures" : "textures/blocks/chiseled_nether_bricks" }, @@ -396,6 +447,9 @@ "coal_ore" : { "textures" : "textures/blocks/coal_ore" }, + "cobbled_deepslate" : { + "textures" : "textures/blocks/deepslate/cobbled_deepslate" + }, "cobblestone" : { "textures" : "textures/blocks/cobblestone" }, @@ -534,6 +588,12 @@ "conduit" : { "textures" : "textures/blocks/conduit_base" }, + "copper_block" : { + "textures" : "textures/blocks/copper_block" + }, + "copper_ore" : { + "textures" : "textures/blocks/copper_ore" + }, "coral" : { "textures" : [ "textures/blocks/coral_plant_blue", @@ -604,6 +664,12 @@ "textures/blocks/coral_fan_yellow_dead" ] }, + "cracked_deepslate_bricks" : { + "textures" : "textures/blocks/deepslate/cracked_deepslate_bricks" + }, + "cracked_deepslate_tiles" : { + "textures" : "textures/blocks/deepslate/cracked_deepslate_tiles" + }, "cracked_nether_bricks" : { "textures" : "textures/blocks/cracked_nether_bricks" }, @@ -658,6 +724,9 @@ "crying_obsidian" : { "textures" : "textures/blocks/crying_obsidian" }, + "cut_copper" : { + "textures" : "textures/blocks/cut_copper" + }, "cyan_glazed_terracotta" : { "textures" : "textures/blocks/glazed_terracotta_cyan" }, @@ -688,6 +757,42 @@ "deadbush" : { "textures" : "textures/blocks/deadbush" }, + "deepslate" : { + "textures" : "textures/blocks/deepslate/deepslate" + }, + "deepslate_bricks" : { + "textures" : "textures/blocks/deepslate/deepslate_bricks" + }, + "deepslate_coal_ore" : { + "textures" : "textures/blocks/deepslate/deepslate_coal_ore" + }, + "deepslate_copper_ore" : { + "textures" : "textures/blocks/deepslate/deepslate_copper_ore" + }, + "deepslate_diamond_ore" : { + "textures" : "textures/blocks/deepslate/deepslate_diamond_ore" + }, + "deepslate_emerald_ore" : { + "textures" : "textures/blocks/deepslate/deepslate_emerald_ore" + }, + "deepslate_gold_ore" : { + "textures" : "textures/blocks/deepslate/deepslate_gold_ore" + }, + "deepslate_iron_ore" : { + "textures" : "textures/blocks/deepslate/deepslate_iron_ore" + }, + "deepslate_lapis_ore" : { + "textures" : "textures/blocks/deepslate/deepslate_lapis_ore" + }, + "deepslate_redstone_ore" : { + "textures" : "textures/blocks/deepslate/deepslate_redstone_ore" + }, + "deepslate_tiles" : { + "textures" : "textures/blocks/deepslate/deepslate_tiles" + }, + "deepslate_top" : { + "textures" : "textures/blocks/deepslate/deepslate_top" + }, "destroy" : { "textures" : [ "textures/environment/destroy_stage_0", @@ -723,6 +828,9 @@ "dirt_podzol_top" : { "textures" : "textures/blocks/dirt_podzol_top" }, + "dirt_with_roots" : { + "textures" : "textures/blocks/dirt_with_roots" + }, "dispenser_front_horizontal" : { "textures" : "textures/blocks/dispenser_front_horizontal" }, @@ -799,6 +907,9 @@ "dried_kelp_block_top" : { "textures" : "textures/blocks/dried_kelp_top" }, + "dripstone_block" : { + "textures" : "textures/blocks/dripstone_block" + }, "dropper_front_horizontal" : { "textures" : "textures/blocks/dropper_front_horizontal" }, @@ -862,6 +973,12 @@ "endframe_top" : { "textures" : "textures/blocks/endframe_top" }, + "exposed_copper" : { + "textures" : "textures/blocks/exposed_copper" + }, + "exposed_cut_copper" : { + "textures" : "textures/blocks/exposed_cut_copper" + }, "farmland" : { "textures" : [ "textures/blocks/farmland_wet", "textures/blocks/farmland_dry" ] }, @@ -886,6 +1003,12 @@ "flower_pot" : { "textures" : "textures/blocks/flower_pot" }, + "flowering_azalea_side" : { + "textures" : "textures/blocks/flowering_azalea_side" + }, + "flowering_azalea_top" : { + "textures" : "textures/blocks/flowering_azalea_top" + }, "flowing_lava" : { "quad" : 1, "textures" : "textures/blocks/lava_flow" @@ -941,6 +1064,12 @@ "glass_pane_top" : { "textures" : "textures/blocks/glass_pane_top" }, + "glow_item_frame" : { + "textures" : "textures/blocks/glow_item_frame" + }, + "glow_lichen" : { + "textures" : "textures/blocks/glow_lichen" + }, "glowing_obsidian" : { "textures" : "textures/blocks/glowing_obsidian" }, @@ -1106,6 +1235,9 @@ "grindstone_side" : { "textures" : "textures/blocks/grindstone_side" }, + "hanging_roots" : { + "textures" : "textures/blocks/hanging_roots" + }, "hardened_clay" : { "textures" : "textures/blocks/hardened_clay" }, @@ -1220,6 +1352,9 @@ "lapis_ore" : { "textures" : "textures/blocks/lapis_ore" }, + "large_amethyst_bud" : { + "textures" : "textures/blocks/large_amethyst_bud" + }, "leaves" : { "textures" : [ "textures/blocks/leaves_oak", @@ -1304,6 +1439,9 @@ "light_blue_glazed_terracotta" : { "textures" : "textures/blocks/glazed_terracotta_light_blue" }, + "lightning_rod" : { + "textures" : "textures/blocks/lightning_rod" + }, "lime_glazed_terracotta" : { "textures" : "textures/blocks/glazed_terracotta_lime" }, @@ -1361,6 +1499,9 @@ "magma" : { "textures" : "textures/blocks/magma" }, + "medium_amethyst_bud" : { + "textures" : "textures/blocks/medium_amethyst_bud" + }, "melon_side" : { "textures" : "textures/blocks/melon_side" }, @@ -1392,6 +1533,9 @@ "textures/blocks/stone" ] }, + "moss_block" : { + "textures" : "textures/blocks/moss_block" + }, "mossy_stone_brick" : { "textures" : "textures/blocks/stonebrick_mossy" }, @@ -1717,6 +1861,12 @@ "orange_glazed_terracotta" : { "textures" : "textures/blocks/glazed_terracotta_orange" }, + "oxidized_copper" : { + "textures" : "textures/blocks/oxidized_copper" + }, + "oxidized_cut_copper" : { + "textures" : "textures/blocks/oxidized_cut_copper" + }, "pink_glazed_terracotta" : { "textures" : "textures/blocks/glazed_terracotta_pink" }, @@ -1745,6 +1895,36 @@ "textures/blocks/planks_big_oak" ] }, + "pointed_dripstone_base" : { + "textures" : [ + "textures/blocks/pointed_dripstone_down_base", + "textures/blocks/pointed_dripstone_up_base" + ] + }, + "pointed_dripstone_frustum" : { + "textures" : [ + "textures/blocks/pointed_dripstone_down_frustum", + "textures/blocks/pointed_dripstone_up_frustum" + ] + }, + "pointed_dripstone_merge" : { + "textures" : [ + "textures/blocks/pointed_dripstone_down_merge", + "textures/blocks/pointed_dripstone_up_merge" + ] + }, + "pointed_dripstone_middle" : { + "textures" : [ + "textures/blocks/pointed_dripstone_down_middle", + "textures/blocks/pointed_dripstone_up_middle" + ] + }, + "pointed_dripstone_tip" : { + "textures" : [ + "textures/blocks/pointed_dripstone_down_tip", + "textures/blocks/pointed_dripstone_up_tip" + ] + }, "polished_andesite" : { "textures" : "textures/blocks/stone_andesite_smooth" }, @@ -1760,6 +1940,9 @@ "polished_blackstone_bricks" : { "textures" : "textures/blocks/polished_blackstone_bricks" }, + "polished_deepslate" : { + "textures" : "textures/blocks/deepslate/polished_deepslate" + }, "polished_diorite" : { "textures" : "textures/blocks/stone_diorite_smooth" }, @@ -1777,6 +1960,9 @@ "textures/blocks/potatoes_stage_3" ] }, + "powder_snow" : { + "textures" : "textures/blocks/powder_snow" + }, "prismarine" : { "textures" : [ "textures/blocks/prismarine_rough", @@ -1892,6 +2078,15 @@ "rail_normal_turned" : { "textures" : "textures/blocks/rail_normal_turned" }, + "raw_copper_block" : { + "textures" : "textures/blocks/raw_copper_block" + }, + "raw_gold_block" : { + "textures" : "textures/blocks/raw_gold_block" + }, + "raw_iron_block" : { + "textures" : "textures/blocks/raw_iron_block" + }, "reactor_core" : { "textures" : [ "textures/blocks/reactor_core_stage_0", @@ -2122,6 +2317,21 @@ "slime_block" : { "textures" : "textures/blocks/slime" }, + "small_amethyst_bud" : { + "textures" : "textures/blocks/small_amethyst_bud" + }, + "small_dripleaf_side" : { + "textures" : "textures/blocks/small_dripleaf_side" + }, + "small_dripleaf_stem_bottom" : { + "textures" : "textures/blocks/small_dripleaf_stem_bottom" + }, + "small_dripleaf_stem_top" : { + "textures" : "textures/blocks/small_dripleaf_stem_top" + }, + "small_dripleaf_top" : { + "textures" : "textures/blocks/small_dripleaf_top" + }, "smithing_table_bottom" : { "textures" : "textures/blocks/smithing_table_bottom" }, @@ -2157,6 +2367,9 @@ "smoker_top" : { "textures" : [ "textures/blocks/smoker_top", "textures/blocks/smoker_top" ] }, + "smooth_basalt" : { + "textures" : "textures/blocks/smooth_basalt" + }, "smooth_red_sandstone" : { "textures" : "textures/blocks/red_sandstone_top" }, @@ -2175,6 +2388,12 @@ "soul_campfire_log_lit" : { "textures" : "textures/blocks/soul_campfire_log_lit" }, + "soul_fire_0" : { + "textures" : "textures/blocks/soul_fire_0" + }, + "soul_fire_1" : { + "textures" : "textures/blocks/soul_fire_1" + }, "soul_lantern" : { "textures" : "textures/blocks/soul_lantern" }, @@ -2193,6 +2412,12 @@ "sponge" : { "textures" : [ "textures/blocks/sponge", "textures/blocks/sponge_wet" ] }, + "spore_blossom" : { + "textures" : "textures/blocks/spore_blossom" + }, + "spore_blossom_base" : { + "textures" : "textures/blocks/spore_blossom_base" + }, "spruce_planks" : { "textures" : "textures/blocks/planks_spruce" }, @@ -2571,6 +2796,9 @@ "target_top" : { "textures" : "textures/blocks/target_top" }, + "tinted_glass" : { + "textures" : "textures/blocks/tinted_glass" + }, "tnt_bottom" : { "textures" : "textures/blocks/tnt_bottom" }, @@ -2598,6 +2826,9 @@ "trip_wire_source" : { "textures" : "textures/blocks/trip_wire_source" }, + "tuff" : { + "textures" : "textures/blocks/tuff" + }, "turtle_egg" : { "textures" : [ "textures/blocks/turtle_egg_not_cracked", @@ -2656,6 +2887,9 @@ "warped_trapdoor" : { "textures" : "textures/blocks/huge_fungus/warped_trapdoor" }, + "warped_wart_block" : { + "textures" : [ "textures/blocks/warped_wart_block" ] + }, "waterlily" : { "textures" : [ { @@ -2667,6 +2901,12 @@ "waterlily_carried" : { "textures" : "textures/blocks/carried_waterlily" }, + "weathered_copper" : { + "textures" : "textures/blocks/weathered_copper" + }, + "weathered_cut_copper" : { + "textures" : "textures/blocks/weathered_cut_copper" + }, "web" : { "textures" : "textures/blocks/web" },