diff --git a/src/mining.html b/src/mining.html new file mode 100644 index 0000000..48b6836 --- /dev/null +++ b/src/mining.html @@ -0,0 +1,259 @@ + + + + + + + + + + + + + + + + + + +
+
+
Depth: 0
+
Score: 0
+
+ + +
+ +
+
+ +
+ +
diff --git a/templates/_header.html b/templates/_header.html index 59d060b..c42c020 100644 --- a/templates/_header.html +++ b/templates/_header.html @@ -27,5 +27,6 @@ UE Material Snippets Documentation Number Match + Mining Game diff --git a/templates/_layout.html b/templates/_layout.html index 7408d84..84924d9 100644 --- a/templates/_layout.html +++ b/templates/_layout.html @@ -8,7 +8,7 @@ - + diff --git a/website/blocks/anvil_base.png b/website/blocks/anvil_base.png new file mode 100644 index 0000000..cfc1fc8 Binary files /dev/null and b/website/blocks/anvil_base.png differ diff --git a/website/blocks/anvil_top_damaged_0.png b/website/blocks/anvil_top_damaged_0.png new file mode 100644 index 0000000..395dea4 Binary files /dev/null and b/website/blocks/anvil_top_damaged_0.png differ diff --git a/website/blocks/anvil_top_damaged_1.png b/website/blocks/anvil_top_damaged_1.png new file mode 100644 index 0000000..eddc47f Binary files /dev/null and b/website/blocks/anvil_top_damaged_1.png differ diff --git a/website/blocks/anvil_top_damaged_2.png b/website/blocks/anvil_top_damaged_2.png new file mode 100644 index 0000000..6cade1f Binary files /dev/null and b/website/blocks/anvil_top_damaged_2.png differ diff --git a/website/blocks/beacon.png b/website/blocks/beacon.png new file mode 100644 index 0000000..a69e59d Binary files /dev/null and b/website/blocks/beacon.png differ diff --git a/website/blocks/bed_feet_end.png b/website/blocks/bed_feet_end.png new file mode 100644 index 0000000..6e1a4be Binary files /dev/null and b/website/blocks/bed_feet_end.png differ diff --git a/website/blocks/bed_feet_side.png b/website/blocks/bed_feet_side.png new file mode 100644 index 0000000..3ce06f3 Binary files /dev/null and b/website/blocks/bed_feet_side.png differ diff --git a/website/blocks/bed_feet_top.png b/website/blocks/bed_feet_top.png new file mode 100644 index 0000000..b96d357 Binary files /dev/null and b/website/blocks/bed_feet_top.png differ diff --git a/website/blocks/bed_head_end.png b/website/blocks/bed_head_end.png new file mode 100644 index 0000000..b684c9a Binary files /dev/null and b/website/blocks/bed_head_end.png differ diff --git a/website/blocks/bed_head_side.png b/website/blocks/bed_head_side.png new file mode 100644 index 0000000..3270b4a Binary files /dev/null and b/website/blocks/bed_head_side.png differ diff --git a/website/blocks/bed_head_top.png b/website/blocks/bed_head_top.png new file mode 100644 index 0000000..2ab1090 Binary files /dev/null and b/website/blocks/bed_head_top.png differ diff --git a/website/blocks/bedrock.png b/website/blocks/bedrock.png new file mode 100644 index 0000000..1643c99 Binary files /dev/null and b/website/blocks/bedrock.png differ diff --git a/website/blocks/bookshelf.png b/website/blocks/bookshelf.png new file mode 100644 index 0000000..4c87f0f Binary files /dev/null and b/website/blocks/bookshelf.png differ diff --git a/website/blocks/brewing_stand.png b/website/blocks/brewing_stand.png new file mode 100644 index 0000000..60832aa Binary files /dev/null and b/website/blocks/brewing_stand.png differ diff --git a/website/blocks/brewing_stand_base.png b/website/blocks/brewing_stand_base.png new file mode 100644 index 0000000..0742fbf Binary files /dev/null and b/website/blocks/brewing_stand_base.png differ diff --git a/website/blocks/brick.png b/website/blocks/brick.png new file mode 100644 index 0000000..fd6959c Binary files /dev/null and b/website/blocks/brick.png differ diff --git a/website/blocks/cactus_bottom.png b/website/blocks/cactus_bottom.png new file mode 100644 index 0000000..6f10bc0 Binary files /dev/null and b/website/blocks/cactus_bottom.png differ diff --git a/website/blocks/cactus_side.png b/website/blocks/cactus_side.png new file mode 100644 index 0000000..9c55503 Binary files /dev/null and b/website/blocks/cactus_side.png differ diff --git a/website/blocks/cactus_top.png b/website/blocks/cactus_top.png new file mode 100644 index 0000000..f182e84 Binary files /dev/null and b/website/blocks/cactus_top.png differ diff --git a/website/blocks/cake_bottom.png b/website/blocks/cake_bottom.png new file mode 100644 index 0000000..d93b15a Binary files /dev/null and b/website/blocks/cake_bottom.png differ diff --git a/website/blocks/cake_inner.png b/website/blocks/cake_inner.png new file mode 100644 index 0000000..ce7ce69 Binary files /dev/null and b/website/blocks/cake_inner.png differ diff --git a/website/blocks/cake_side.png b/website/blocks/cake_side.png new file mode 100644 index 0000000..343a023 Binary files /dev/null and b/website/blocks/cake_side.png differ diff --git a/website/blocks/cake_top.png b/website/blocks/cake_top.png new file mode 100644 index 0000000..2947892 Binary files /dev/null and b/website/blocks/cake_top.png differ diff --git a/website/blocks/carrots_stage_0.png b/website/blocks/carrots_stage_0.png new file mode 100644 index 0000000..c1ef732 Binary files /dev/null and b/website/blocks/carrots_stage_0.png differ diff --git a/website/blocks/carrots_stage_1.png b/website/blocks/carrots_stage_1.png new file mode 100644 index 0000000..1275f4f Binary files /dev/null and b/website/blocks/carrots_stage_1.png differ diff --git a/website/blocks/carrots_stage_2.png b/website/blocks/carrots_stage_2.png new file mode 100644 index 0000000..b7347df Binary files /dev/null and b/website/blocks/carrots_stage_2.png differ diff --git a/website/blocks/carrots_stage_3.png b/website/blocks/carrots_stage_3.png new file mode 100644 index 0000000..2391be8 Binary files /dev/null and b/website/blocks/carrots_stage_3.png differ diff --git a/website/blocks/cauldron_bottom.png b/website/blocks/cauldron_bottom.png new file mode 100644 index 0000000..8328307 Binary files /dev/null and b/website/blocks/cauldron_bottom.png differ diff --git a/website/blocks/cauldron_inner.png b/website/blocks/cauldron_inner.png new file mode 100644 index 0000000..d5a30dd Binary files /dev/null and b/website/blocks/cauldron_inner.png differ diff --git a/website/blocks/cauldron_side.png b/website/blocks/cauldron_side.png new file mode 100644 index 0000000..df42f98 Binary files /dev/null and b/website/blocks/cauldron_side.png differ diff --git a/website/blocks/cauldron_top.png b/website/blocks/cauldron_top.png new file mode 100644 index 0000000..e263fc5 Binary files /dev/null and b/website/blocks/cauldron_top.png differ diff --git a/website/blocks/clay.png b/website/blocks/clay.png new file mode 100644 index 0000000..c19e031 Binary files /dev/null and b/website/blocks/clay.png differ diff --git a/website/blocks/coal_block.png b/website/blocks/coal_block.png new file mode 100644 index 0000000..024404b Binary files /dev/null and b/website/blocks/coal_block.png differ diff --git a/website/blocks/coal_ore.png b/website/blocks/coal_ore.png new file mode 100644 index 0000000..49486d2 Binary files /dev/null and b/website/blocks/coal_ore.png differ diff --git a/website/blocks/coarse_dirt.png b/website/blocks/coarse_dirt.png new file mode 100644 index 0000000..d646225 Binary files /dev/null and b/website/blocks/coarse_dirt.png differ diff --git a/website/blocks/cobblestone.png b/website/blocks/cobblestone.png new file mode 100644 index 0000000..da3498c Binary files /dev/null and b/website/blocks/cobblestone.png differ diff --git a/website/blocks/cobblestone_mossy.png b/website/blocks/cobblestone_mossy.png new file mode 100644 index 0000000..29449e3 Binary files /dev/null and b/website/blocks/cobblestone_mossy.png differ diff --git a/website/blocks/cocoa_stage_0.png b/website/blocks/cocoa_stage_0.png new file mode 100644 index 0000000..25892eb Binary files /dev/null and b/website/blocks/cocoa_stage_0.png differ diff --git a/website/blocks/cocoa_stage_1.png b/website/blocks/cocoa_stage_1.png new file mode 100644 index 0000000..d0098ff Binary files /dev/null and b/website/blocks/cocoa_stage_1.png differ diff --git a/website/blocks/cocoa_stage_2.png b/website/blocks/cocoa_stage_2.png new file mode 100644 index 0000000..db28c7b Binary files /dev/null and b/website/blocks/cocoa_stage_2.png differ diff --git a/website/blocks/command_block.png b/website/blocks/command_block.png new file mode 100644 index 0000000..4459675 Binary files /dev/null and b/website/blocks/command_block.png differ diff --git a/website/blocks/comparator_off.png b/website/blocks/comparator_off.png new file mode 100644 index 0000000..c9527bc Binary files /dev/null and b/website/blocks/comparator_off.png differ diff --git a/website/blocks/comparator_on.png b/website/blocks/comparator_on.png new file mode 100644 index 0000000..2e4fb7a Binary files /dev/null and b/website/blocks/comparator_on.png differ diff --git a/website/blocks/crafting_table_front.png b/website/blocks/crafting_table_front.png new file mode 100644 index 0000000..11986a4 Binary files /dev/null and b/website/blocks/crafting_table_front.png differ diff --git a/website/blocks/crafting_table_side.png b/website/blocks/crafting_table_side.png new file mode 100644 index 0000000..1c678b4 Binary files /dev/null and b/website/blocks/crafting_table_side.png differ diff --git a/website/blocks/crafting_table_top.png b/website/blocks/crafting_table_top.png new file mode 100644 index 0000000..5cd53a5 Binary files /dev/null and b/website/blocks/crafting_table_top.png differ diff --git a/website/blocks/daylight_detector_inverted_top.png b/website/blocks/daylight_detector_inverted_top.png new file mode 100644 index 0000000..194a30e Binary files /dev/null and b/website/blocks/daylight_detector_inverted_top.png differ diff --git a/website/blocks/daylight_detector_side.png b/website/blocks/daylight_detector_side.png new file mode 100644 index 0000000..ac273ea Binary files /dev/null and b/website/blocks/daylight_detector_side.png differ diff --git a/website/blocks/daylight_detector_top.png b/website/blocks/daylight_detector_top.png new file mode 100644 index 0000000..3bfb2da Binary files /dev/null and b/website/blocks/daylight_detector_top.png differ diff --git a/website/blocks/deadbush.png b/website/blocks/deadbush.png new file mode 100644 index 0000000..c64e079 Binary files /dev/null and b/website/blocks/deadbush.png differ diff --git a/website/blocks/destroy_stage_0.png b/website/blocks/destroy_stage_0.png new file mode 100644 index 0000000..f65b7ed Binary files /dev/null and b/website/blocks/destroy_stage_0.png differ diff --git a/website/blocks/destroy_stage_1.png b/website/blocks/destroy_stage_1.png new file mode 100644 index 0000000..7c91596 Binary files /dev/null and b/website/blocks/destroy_stage_1.png differ diff --git a/website/blocks/destroy_stage_2.png b/website/blocks/destroy_stage_2.png new file mode 100644 index 0000000..dadd6b0 Binary files /dev/null and b/website/blocks/destroy_stage_2.png differ diff --git a/website/blocks/destroy_stage_3.png b/website/blocks/destroy_stage_3.png new file mode 100644 index 0000000..583b436 Binary files /dev/null and b/website/blocks/destroy_stage_3.png differ diff --git a/website/blocks/destroy_stage_4.png b/website/blocks/destroy_stage_4.png new file mode 100644 index 0000000..9c18a58 Binary files /dev/null and b/website/blocks/destroy_stage_4.png differ diff --git a/website/blocks/destroy_stage_5.png b/website/blocks/destroy_stage_5.png new file mode 100644 index 0000000..e4cee78 Binary files /dev/null and b/website/blocks/destroy_stage_5.png differ diff --git a/website/blocks/destroy_stage_6.png b/website/blocks/destroy_stage_6.png new file mode 100644 index 0000000..1299454 Binary files /dev/null and b/website/blocks/destroy_stage_6.png differ diff --git a/website/blocks/destroy_stage_7.png b/website/blocks/destroy_stage_7.png new file mode 100644 index 0000000..1a69168 Binary files /dev/null and b/website/blocks/destroy_stage_7.png differ diff --git a/website/blocks/destroy_stage_8.png b/website/blocks/destroy_stage_8.png new file mode 100644 index 0000000..47a93a9 Binary files /dev/null and b/website/blocks/destroy_stage_8.png differ diff --git a/website/blocks/destroy_stage_9.png b/website/blocks/destroy_stage_9.png new file mode 100644 index 0000000..9313aff Binary files /dev/null and b/website/blocks/destroy_stage_9.png differ diff --git a/website/blocks/diamond_block.png b/website/blocks/diamond_block.png new file mode 100644 index 0000000..f2e2e77 Binary files /dev/null and b/website/blocks/diamond_block.png differ diff --git a/website/blocks/diamond_ore.png b/website/blocks/diamond_ore.png new file mode 100644 index 0000000..735ecda Binary files /dev/null and b/website/blocks/diamond_ore.png differ diff --git a/website/blocks/dirt.png b/website/blocks/dirt.png new file mode 100644 index 0000000..617d353 Binary files /dev/null and b/website/blocks/dirt.png differ diff --git a/website/blocks/dirt_podzol_side.png b/website/blocks/dirt_podzol_side.png new file mode 100644 index 0000000..5921d37 Binary files /dev/null and b/website/blocks/dirt_podzol_side.png differ diff --git a/website/blocks/dirt_podzol_top.png b/website/blocks/dirt_podzol_top.png new file mode 100644 index 0000000..ebeda86 Binary files /dev/null and b/website/blocks/dirt_podzol_top.png differ diff --git a/website/blocks/dispenser_front_horizontal.png b/website/blocks/dispenser_front_horizontal.png new file mode 100644 index 0000000..3e09fde Binary files /dev/null and b/website/blocks/dispenser_front_horizontal.png differ diff --git a/website/blocks/dispenser_front_vertical.png b/website/blocks/dispenser_front_vertical.png new file mode 100644 index 0000000..87a7837 Binary files /dev/null and b/website/blocks/dispenser_front_vertical.png differ diff --git a/website/blocks/door_acacia_lower.png b/website/blocks/door_acacia_lower.png new file mode 100644 index 0000000..2f57508 Binary files /dev/null and b/website/blocks/door_acacia_lower.png differ diff --git a/website/blocks/door_acacia_upper.png b/website/blocks/door_acacia_upper.png new file mode 100644 index 0000000..9b7e742 Binary files /dev/null and b/website/blocks/door_acacia_upper.png differ diff --git a/website/blocks/door_birch_lower.png b/website/blocks/door_birch_lower.png new file mode 100644 index 0000000..2c6f7d3 Binary files /dev/null and b/website/blocks/door_birch_lower.png differ diff --git a/website/blocks/door_birch_upper.png b/website/blocks/door_birch_upper.png new file mode 100644 index 0000000..1345b41 Binary files /dev/null and b/website/blocks/door_birch_upper.png differ diff --git a/website/blocks/door_dark_oak_lower.png b/website/blocks/door_dark_oak_lower.png new file mode 100644 index 0000000..7bb3ff2 Binary files /dev/null and b/website/blocks/door_dark_oak_lower.png differ diff --git a/website/blocks/door_dark_oak_upper.png b/website/blocks/door_dark_oak_upper.png new file mode 100644 index 0000000..27fa6cc Binary files /dev/null and b/website/blocks/door_dark_oak_upper.png differ diff --git a/website/blocks/door_iron_lower.png b/website/blocks/door_iron_lower.png new file mode 100644 index 0000000..dbc33ab Binary files /dev/null and b/website/blocks/door_iron_lower.png differ diff --git a/website/blocks/door_iron_upper.png b/website/blocks/door_iron_upper.png new file mode 100644 index 0000000..56878fe Binary files /dev/null and b/website/blocks/door_iron_upper.png differ diff --git a/website/blocks/door_jungle_lower.png b/website/blocks/door_jungle_lower.png new file mode 100644 index 0000000..4edfa3c Binary files /dev/null and b/website/blocks/door_jungle_lower.png differ diff --git a/website/blocks/door_jungle_upper.png b/website/blocks/door_jungle_upper.png new file mode 100644 index 0000000..d5201f8 Binary files /dev/null and b/website/blocks/door_jungle_upper.png differ diff --git a/website/blocks/door_spruce_lower.png b/website/blocks/door_spruce_lower.png new file mode 100644 index 0000000..5faa6e7 Binary files /dev/null and b/website/blocks/door_spruce_lower.png differ diff --git a/website/blocks/door_spruce_upper.png b/website/blocks/door_spruce_upper.png new file mode 100644 index 0000000..38e2717 Binary files /dev/null and b/website/blocks/door_spruce_upper.png differ diff --git a/website/blocks/door_wood_lower.png b/website/blocks/door_wood_lower.png new file mode 100644 index 0000000..cc61731 Binary files /dev/null and b/website/blocks/door_wood_lower.png differ diff --git a/website/blocks/door_wood_upper.png b/website/blocks/door_wood_upper.png new file mode 100644 index 0000000..93319d5 Binary files /dev/null and b/website/blocks/door_wood_upper.png differ diff --git a/website/blocks/double_plant_fern_bottom.png b/website/blocks/double_plant_fern_bottom.png new file mode 100644 index 0000000..6a5fa6a Binary files /dev/null and b/website/blocks/double_plant_fern_bottom.png differ diff --git a/website/blocks/double_plant_fern_top.png b/website/blocks/double_plant_fern_top.png new file mode 100644 index 0000000..393144c Binary files /dev/null and b/website/blocks/double_plant_fern_top.png differ diff --git a/website/blocks/double_plant_grass_bottom.png b/website/blocks/double_plant_grass_bottom.png new file mode 100644 index 0000000..5ac15b4 Binary files /dev/null and b/website/blocks/double_plant_grass_bottom.png differ diff --git a/website/blocks/double_plant_grass_top.png b/website/blocks/double_plant_grass_top.png new file mode 100644 index 0000000..1ceb3de Binary files /dev/null and b/website/blocks/double_plant_grass_top.png differ diff --git a/website/blocks/double_plant_paeonia_bottom.png b/website/blocks/double_plant_paeonia_bottom.png new file mode 100644 index 0000000..21285f5 Binary files /dev/null and b/website/blocks/double_plant_paeonia_bottom.png differ diff --git a/website/blocks/double_plant_paeonia_top.png b/website/blocks/double_plant_paeonia_top.png new file mode 100644 index 0000000..bc68241 Binary files /dev/null and b/website/blocks/double_plant_paeonia_top.png differ diff --git a/website/blocks/double_plant_rose_bottom.png b/website/blocks/double_plant_rose_bottom.png new file mode 100644 index 0000000..4d59f44 Binary files /dev/null and b/website/blocks/double_plant_rose_bottom.png differ diff --git a/website/blocks/double_plant_rose_top.png b/website/blocks/double_plant_rose_top.png new file mode 100644 index 0000000..028aa80 Binary files /dev/null and b/website/blocks/double_plant_rose_top.png differ diff --git a/website/blocks/double_plant_sunflower_back.png b/website/blocks/double_plant_sunflower_back.png new file mode 100644 index 0000000..d488923 Binary files /dev/null and b/website/blocks/double_plant_sunflower_back.png differ diff --git a/website/blocks/double_plant_sunflower_bottom.png b/website/blocks/double_plant_sunflower_bottom.png new file mode 100644 index 0000000..8a12ebe Binary files /dev/null and b/website/blocks/double_plant_sunflower_bottom.png differ diff --git a/website/blocks/double_plant_sunflower_front.png b/website/blocks/double_plant_sunflower_front.png new file mode 100644 index 0000000..699e34f Binary files /dev/null and b/website/blocks/double_plant_sunflower_front.png differ diff --git a/website/blocks/double_plant_sunflower_top.png b/website/blocks/double_plant_sunflower_top.png new file mode 100644 index 0000000..4d14203 Binary files /dev/null and b/website/blocks/double_plant_sunflower_top.png differ diff --git a/website/blocks/double_plant_syringa_bottom.png b/website/blocks/double_plant_syringa_bottom.png new file mode 100644 index 0000000..5b880b5 Binary files /dev/null and b/website/blocks/double_plant_syringa_bottom.png differ diff --git a/website/blocks/double_plant_syringa_top.png b/website/blocks/double_plant_syringa_top.png new file mode 100644 index 0000000..b00751f Binary files /dev/null and b/website/blocks/double_plant_syringa_top.png differ diff --git a/website/blocks/dragon_egg.png b/website/blocks/dragon_egg.png new file mode 100644 index 0000000..02af123 Binary files /dev/null and b/website/blocks/dragon_egg.png differ diff --git a/website/blocks/dropper_front_horizontal.png b/website/blocks/dropper_front_horizontal.png new file mode 100644 index 0000000..7d5f260 Binary files /dev/null and b/website/blocks/dropper_front_horizontal.png differ diff --git a/website/blocks/dropper_front_vertical.png b/website/blocks/dropper_front_vertical.png new file mode 100644 index 0000000..68a56c8 Binary files /dev/null and b/website/blocks/dropper_front_vertical.png differ diff --git a/website/blocks/emerald_block.png b/website/blocks/emerald_block.png new file mode 100644 index 0000000..dc214ee Binary files /dev/null and b/website/blocks/emerald_block.png differ diff --git a/website/blocks/emerald_ore.png b/website/blocks/emerald_ore.png new file mode 100644 index 0000000..a26c35f Binary files /dev/null and b/website/blocks/emerald_ore.png differ diff --git a/website/blocks/enchanting_table_bottom.png b/website/blocks/enchanting_table_bottom.png new file mode 100644 index 0000000..0f492aa Binary files /dev/null and b/website/blocks/enchanting_table_bottom.png differ diff --git a/website/blocks/enchanting_table_side.png b/website/blocks/enchanting_table_side.png new file mode 100644 index 0000000..f2f4614 Binary files /dev/null and b/website/blocks/enchanting_table_side.png differ diff --git a/website/blocks/enchanting_table_top.png b/website/blocks/enchanting_table_top.png new file mode 100644 index 0000000..0d5f68f Binary files /dev/null and b/website/blocks/enchanting_table_top.png differ diff --git a/website/blocks/end_stone.png b/website/blocks/end_stone.png new file mode 100644 index 0000000..c2a91e3 Binary files /dev/null and b/website/blocks/end_stone.png differ diff --git a/website/blocks/endframe_eye.png b/website/blocks/endframe_eye.png new file mode 100644 index 0000000..afa1d5d Binary files /dev/null and b/website/blocks/endframe_eye.png differ diff --git a/website/blocks/endframe_side.png b/website/blocks/endframe_side.png new file mode 100644 index 0000000..e6cb567 Binary files /dev/null and b/website/blocks/endframe_side.png differ diff --git a/website/blocks/endframe_top.png b/website/blocks/endframe_top.png new file mode 100644 index 0000000..35215a5 Binary files /dev/null and b/website/blocks/endframe_top.png differ diff --git a/website/blocks/farmland_dry.png b/website/blocks/farmland_dry.png new file mode 100644 index 0000000..d03a0f4 Binary files /dev/null and b/website/blocks/farmland_dry.png differ diff --git a/website/blocks/farmland_wet.png b/website/blocks/farmland_wet.png new file mode 100644 index 0000000..f8d460d Binary files /dev/null and b/website/blocks/farmland_wet.png differ diff --git a/website/blocks/fern.png b/website/blocks/fern.png new file mode 100644 index 0000000..fd76950 Binary files /dev/null and b/website/blocks/fern.png differ diff --git a/website/blocks/fire_layer_0.png b/website/blocks/fire_layer_0.png new file mode 100644 index 0000000..cf8910f Binary files /dev/null and b/website/blocks/fire_layer_0.png differ diff --git a/website/blocks/fire_layer_0.png.mcmeta b/website/blocks/fire_layer_0.png.mcmeta new file mode 100644 index 0000000..7644671 --- /dev/null +++ b/website/blocks/fire_layer_0.png.mcmeta @@ -0,0 +1,38 @@ +{ + "animation": { + "frames": [ + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29, + 30, + 31, + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ] + } +} diff --git a/website/blocks/fire_layer_1.png b/website/blocks/fire_layer_1.png new file mode 100644 index 0000000..6db92ac Binary files /dev/null and b/website/blocks/fire_layer_1.png differ diff --git a/website/blocks/fire_layer_1.png.mcmeta b/website/blocks/fire_layer_1.png.mcmeta new file mode 100644 index 0000000..4f0718a --- /dev/null +++ b/website/blocks/fire_layer_1.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": {} +} \ No newline at end of file diff --git a/website/blocks/flower_allium.png b/website/blocks/flower_allium.png new file mode 100644 index 0000000..b7b5a45 Binary files /dev/null and b/website/blocks/flower_allium.png differ diff --git a/website/blocks/flower_blue_orchid.png b/website/blocks/flower_blue_orchid.png new file mode 100644 index 0000000..51d7fd9 Binary files /dev/null and b/website/blocks/flower_blue_orchid.png differ diff --git a/website/blocks/flower_dandelion.png b/website/blocks/flower_dandelion.png new file mode 100644 index 0000000..873e3f5 Binary files /dev/null and b/website/blocks/flower_dandelion.png differ diff --git a/website/blocks/flower_houstonia.png b/website/blocks/flower_houstonia.png new file mode 100644 index 0000000..2f9127d Binary files /dev/null and b/website/blocks/flower_houstonia.png differ diff --git a/website/blocks/flower_oxeye_daisy.png b/website/blocks/flower_oxeye_daisy.png new file mode 100644 index 0000000..6d48913 Binary files /dev/null and b/website/blocks/flower_oxeye_daisy.png differ diff --git a/website/blocks/flower_paeonia.png b/website/blocks/flower_paeonia.png new file mode 100644 index 0000000..01a92ee Binary files /dev/null and b/website/blocks/flower_paeonia.png differ diff --git a/website/blocks/flower_pot.png b/website/blocks/flower_pot.png new file mode 100644 index 0000000..09c2523 Binary files /dev/null and b/website/blocks/flower_pot.png differ diff --git a/website/blocks/flower_rose.png b/website/blocks/flower_rose.png new file mode 100644 index 0000000..895d78f Binary files /dev/null and b/website/blocks/flower_rose.png differ diff --git a/website/blocks/flower_tulip_orange.png b/website/blocks/flower_tulip_orange.png new file mode 100644 index 0000000..6715a62 Binary files /dev/null and b/website/blocks/flower_tulip_orange.png differ diff --git a/website/blocks/flower_tulip_pink.png b/website/blocks/flower_tulip_pink.png new file mode 100644 index 0000000..a757bf5 Binary files /dev/null and b/website/blocks/flower_tulip_pink.png differ diff --git a/website/blocks/flower_tulip_red.png b/website/blocks/flower_tulip_red.png new file mode 100644 index 0000000..3048b63 Binary files /dev/null and b/website/blocks/flower_tulip_red.png differ diff --git a/website/blocks/flower_tulip_white.png b/website/blocks/flower_tulip_white.png new file mode 100644 index 0000000..6aa12a9 Binary files /dev/null and b/website/blocks/flower_tulip_white.png differ diff --git a/website/blocks/furnace_front_off.png b/website/blocks/furnace_front_off.png new file mode 100644 index 0000000..0570c3a Binary files /dev/null and b/website/blocks/furnace_front_off.png differ diff --git a/website/blocks/furnace_front_on.png b/website/blocks/furnace_front_on.png new file mode 100644 index 0000000..92c89f3 Binary files /dev/null and b/website/blocks/furnace_front_on.png differ diff --git a/website/blocks/furnace_side.png b/website/blocks/furnace_side.png new file mode 100644 index 0000000..115f73d Binary files /dev/null and b/website/blocks/furnace_side.png differ diff --git a/website/blocks/furnace_top.png b/website/blocks/furnace_top.png new file mode 100644 index 0000000..a3a5a08 Binary files /dev/null and b/website/blocks/furnace_top.png differ diff --git a/website/blocks/glass.png b/website/blocks/glass.png new file mode 100644 index 0000000..acadb01 Binary files /dev/null and b/website/blocks/glass.png differ diff --git a/website/blocks/glass_black.png b/website/blocks/glass_black.png new file mode 100644 index 0000000..06f3427 Binary files /dev/null and b/website/blocks/glass_black.png differ diff --git a/website/blocks/glass_blue.png b/website/blocks/glass_blue.png new file mode 100644 index 0000000..38885de Binary files /dev/null and b/website/blocks/glass_blue.png differ diff --git a/website/blocks/glass_brown.png b/website/blocks/glass_brown.png new file mode 100644 index 0000000..259b61c Binary files /dev/null and b/website/blocks/glass_brown.png differ diff --git a/website/blocks/glass_cyan.png b/website/blocks/glass_cyan.png new file mode 100644 index 0000000..d30caa4 Binary files /dev/null and b/website/blocks/glass_cyan.png differ diff --git a/website/blocks/glass_gray.png b/website/blocks/glass_gray.png new file mode 100644 index 0000000..3f07a5d Binary files /dev/null and b/website/blocks/glass_gray.png differ diff --git a/website/blocks/glass_green.png b/website/blocks/glass_green.png new file mode 100644 index 0000000..7c1f4e6 Binary files /dev/null and b/website/blocks/glass_green.png differ diff --git a/website/blocks/glass_light_blue.png b/website/blocks/glass_light_blue.png new file mode 100644 index 0000000..b62703d Binary files /dev/null and b/website/blocks/glass_light_blue.png differ diff --git a/website/blocks/glass_lime.png b/website/blocks/glass_lime.png new file mode 100644 index 0000000..f1d3c46 Binary files /dev/null and b/website/blocks/glass_lime.png differ diff --git a/website/blocks/glass_magenta.png b/website/blocks/glass_magenta.png new file mode 100644 index 0000000..5cd9945 Binary files /dev/null and b/website/blocks/glass_magenta.png differ diff --git a/website/blocks/glass_orange.png b/website/blocks/glass_orange.png new file mode 100644 index 0000000..3a29e31 Binary files /dev/null and b/website/blocks/glass_orange.png differ diff --git a/website/blocks/glass_pane_top.png b/website/blocks/glass_pane_top.png new file mode 100644 index 0000000..02de587 Binary files /dev/null and b/website/blocks/glass_pane_top.png differ diff --git a/website/blocks/glass_pane_top_black.png b/website/blocks/glass_pane_top_black.png new file mode 100644 index 0000000..43d60c5 Binary files /dev/null and b/website/blocks/glass_pane_top_black.png differ diff --git a/website/blocks/glass_pane_top_blue.png b/website/blocks/glass_pane_top_blue.png new file mode 100644 index 0000000..55c614f Binary files /dev/null and b/website/blocks/glass_pane_top_blue.png differ diff --git a/website/blocks/glass_pane_top_brown.png b/website/blocks/glass_pane_top_brown.png new file mode 100644 index 0000000..cbd791a Binary files /dev/null and b/website/blocks/glass_pane_top_brown.png differ diff --git a/website/blocks/glass_pane_top_cyan.png b/website/blocks/glass_pane_top_cyan.png new file mode 100644 index 0000000..9a34b84 Binary files /dev/null and b/website/blocks/glass_pane_top_cyan.png differ diff --git a/website/blocks/glass_pane_top_gray.png b/website/blocks/glass_pane_top_gray.png new file mode 100644 index 0000000..bb06114 Binary files /dev/null and b/website/blocks/glass_pane_top_gray.png differ diff --git a/website/blocks/glass_pane_top_green.png b/website/blocks/glass_pane_top_green.png new file mode 100644 index 0000000..a7d9fc7 Binary files /dev/null and b/website/blocks/glass_pane_top_green.png differ diff --git a/website/blocks/glass_pane_top_light_blue.png b/website/blocks/glass_pane_top_light_blue.png new file mode 100644 index 0000000..6a0e661 Binary files /dev/null and b/website/blocks/glass_pane_top_light_blue.png differ diff --git a/website/blocks/glass_pane_top_lime.png b/website/blocks/glass_pane_top_lime.png new file mode 100644 index 0000000..0607d75 Binary files /dev/null and b/website/blocks/glass_pane_top_lime.png differ diff --git a/website/blocks/glass_pane_top_magenta.png b/website/blocks/glass_pane_top_magenta.png new file mode 100644 index 0000000..5419e52 Binary files /dev/null and b/website/blocks/glass_pane_top_magenta.png differ diff --git a/website/blocks/glass_pane_top_orange.png b/website/blocks/glass_pane_top_orange.png new file mode 100644 index 0000000..2866571 Binary files /dev/null and b/website/blocks/glass_pane_top_orange.png differ diff --git a/website/blocks/glass_pane_top_pink.png b/website/blocks/glass_pane_top_pink.png new file mode 100644 index 0000000..6b6cd76 Binary files /dev/null and b/website/blocks/glass_pane_top_pink.png differ diff --git a/website/blocks/glass_pane_top_purple.png b/website/blocks/glass_pane_top_purple.png new file mode 100644 index 0000000..23e208e Binary files /dev/null and b/website/blocks/glass_pane_top_purple.png differ diff --git a/website/blocks/glass_pane_top_red.png b/website/blocks/glass_pane_top_red.png new file mode 100644 index 0000000..22b69db Binary files /dev/null and b/website/blocks/glass_pane_top_red.png differ diff --git a/website/blocks/glass_pane_top_silver.png b/website/blocks/glass_pane_top_silver.png new file mode 100644 index 0000000..f226ecc Binary files /dev/null and b/website/blocks/glass_pane_top_silver.png differ diff --git a/website/blocks/glass_pane_top_white.png b/website/blocks/glass_pane_top_white.png new file mode 100644 index 0000000..9a273c3 Binary files /dev/null and b/website/blocks/glass_pane_top_white.png differ diff --git a/website/blocks/glass_pane_top_yellow.png b/website/blocks/glass_pane_top_yellow.png new file mode 100644 index 0000000..1c8580f Binary files /dev/null and b/website/blocks/glass_pane_top_yellow.png differ diff --git a/website/blocks/glass_pink.png b/website/blocks/glass_pink.png new file mode 100644 index 0000000..42d8739 Binary files /dev/null and b/website/blocks/glass_pink.png differ diff --git a/website/blocks/glass_purple.png b/website/blocks/glass_purple.png new file mode 100644 index 0000000..fcae3d2 Binary files /dev/null and b/website/blocks/glass_purple.png differ diff --git a/website/blocks/glass_red.png b/website/blocks/glass_red.png new file mode 100644 index 0000000..db4c5eb Binary files /dev/null and b/website/blocks/glass_red.png differ diff --git a/website/blocks/glass_silver.png b/website/blocks/glass_silver.png new file mode 100644 index 0000000..8461664 Binary files /dev/null and b/website/blocks/glass_silver.png differ diff --git a/website/blocks/glass_white.png b/website/blocks/glass_white.png new file mode 100644 index 0000000..696c5aa Binary files /dev/null and b/website/blocks/glass_white.png differ diff --git a/website/blocks/glass_yellow.png b/website/blocks/glass_yellow.png new file mode 100644 index 0000000..8e48e12 Binary files /dev/null and b/website/blocks/glass_yellow.png differ diff --git a/website/blocks/glowstone.png b/website/blocks/glowstone.png new file mode 100644 index 0000000..c7253b3 Binary files /dev/null and b/website/blocks/glowstone.png differ diff --git a/website/blocks/gold_block.png b/website/blocks/gold_block.png new file mode 100644 index 0000000..174002e Binary files /dev/null and b/website/blocks/gold_block.png differ diff --git a/website/blocks/gold_ore.png b/website/blocks/gold_ore.png new file mode 100644 index 0000000..b1a7a55 Binary files /dev/null and b/website/blocks/gold_ore.png differ diff --git a/website/blocks/grass_side.png b/website/blocks/grass_side.png new file mode 100644 index 0000000..a4975e5 Binary files /dev/null and b/website/blocks/grass_side.png differ diff --git a/website/blocks/grass_side_overlay.png b/website/blocks/grass_side_overlay.png new file mode 100644 index 0000000..fc3fa9d Binary files /dev/null and b/website/blocks/grass_side_overlay.png differ diff --git a/website/blocks/grass_side_snowed.png b/website/blocks/grass_side_snowed.png new file mode 100644 index 0000000..41f6197 Binary files /dev/null and b/website/blocks/grass_side_snowed.png differ diff --git a/website/blocks/grass_top.png b/website/blocks/grass_top.png new file mode 100644 index 0000000..eaa7e45 Binary files /dev/null and b/website/blocks/grass_top.png differ diff --git a/website/blocks/gravel.png b/website/blocks/gravel.png new file mode 100644 index 0000000..388e5c5 Binary files /dev/null and b/website/blocks/gravel.png differ diff --git a/website/blocks/hardened_clay.png b/website/blocks/hardened_clay.png new file mode 100644 index 0000000..2446380 Binary files /dev/null and b/website/blocks/hardened_clay.png differ diff --git a/website/blocks/hardened_clay_stained_black.png b/website/blocks/hardened_clay_stained_black.png new file mode 100644 index 0000000..59da22c Binary files /dev/null and b/website/blocks/hardened_clay_stained_black.png differ diff --git a/website/blocks/hardened_clay_stained_blue.png b/website/blocks/hardened_clay_stained_blue.png new file mode 100644 index 0000000..7e38e27 Binary files /dev/null and b/website/blocks/hardened_clay_stained_blue.png differ diff --git a/website/blocks/hardened_clay_stained_brown.png b/website/blocks/hardened_clay_stained_brown.png new file mode 100644 index 0000000..f81745f Binary files /dev/null and b/website/blocks/hardened_clay_stained_brown.png differ diff --git a/website/blocks/hardened_clay_stained_cyan.png b/website/blocks/hardened_clay_stained_cyan.png new file mode 100644 index 0000000..b05428c Binary files /dev/null and b/website/blocks/hardened_clay_stained_cyan.png differ diff --git a/website/blocks/hardened_clay_stained_gray.png b/website/blocks/hardened_clay_stained_gray.png new file mode 100644 index 0000000..8f86904 Binary files /dev/null and b/website/blocks/hardened_clay_stained_gray.png differ diff --git a/website/blocks/hardened_clay_stained_green.png b/website/blocks/hardened_clay_stained_green.png new file mode 100644 index 0000000..e89162e Binary files /dev/null and b/website/blocks/hardened_clay_stained_green.png differ diff --git a/website/blocks/hardened_clay_stained_light_blue.png b/website/blocks/hardened_clay_stained_light_blue.png new file mode 100644 index 0000000..3d9ebea Binary files /dev/null and b/website/blocks/hardened_clay_stained_light_blue.png differ diff --git a/website/blocks/hardened_clay_stained_lime.png b/website/blocks/hardened_clay_stained_lime.png new file mode 100644 index 0000000..b459a0b Binary files /dev/null and b/website/blocks/hardened_clay_stained_lime.png differ diff --git a/website/blocks/hardened_clay_stained_magenta.png b/website/blocks/hardened_clay_stained_magenta.png new file mode 100644 index 0000000..9663106 Binary files /dev/null and b/website/blocks/hardened_clay_stained_magenta.png differ diff --git a/website/blocks/hardened_clay_stained_orange.png b/website/blocks/hardened_clay_stained_orange.png new file mode 100644 index 0000000..40929db Binary files /dev/null and b/website/blocks/hardened_clay_stained_orange.png differ diff --git a/website/blocks/hardened_clay_stained_pink.png b/website/blocks/hardened_clay_stained_pink.png new file mode 100644 index 0000000..c21c0aa Binary files /dev/null and b/website/blocks/hardened_clay_stained_pink.png differ diff --git a/website/blocks/hardened_clay_stained_purple.png b/website/blocks/hardened_clay_stained_purple.png new file mode 100644 index 0000000..edece94 Binary files /dev/null and b/website/blocks/hardened_clay_stained_purple.png differ diff --git a/website/blocks/hardened_clay_stained_red.png b/website/blocks/hardened_clay_stained_red.png new file mode 100644 index 0000000..6561d12 Binary files /dev/null and b/website/blocks/hardened_clay_stained_red.png differ diff --git a/website/blocks/hardened_clay_stained_silver.png b/website/blocks/hardened_clay_stained_silver.png new file mode 100644 index 0000000..eae07f2 Binary files /dev/null and b/website/blocks/hardened_clay_stained_silver.png differ diff --git a/website/blocks/hardened_clay_stained_white.png b/website/blocks/hardened_clay_stained_white.png new file mode 100644 index 0000000..8066af0 Binary files /dev/null and b/website/blocks/hardened_clay_stained_white.png differ diff --git a/website/blocks/hardened_clay_stained_yellow.png b/website/blocks/hardened_clay_stained_yellow.png new file mode 100644 index 0000000..5da4687 Binary files /dev/null and b/website/blocks/hardened_clay_stained_yellow.png differ diff --git a/website/blocks/hay_block_side.png b/website/blocks/hay_block_side.png new file mode 100644 index 0000000..a2b32db Binary files /dev/null and b/website/blocks/hay_block_side.png differ diff --git a/website/blocks/hay_block_top.png b/website/blocks/hay_block_top.png new file mode 100644 index 0000000..1d35593 Binary files /dev/null and b/website/blocks/hay_block_top.png differ diff --git a/website/blocks/hopper_inside.png b/website/blocks/hopper_inside.png new file mode 100644 index 0000000..24e8eae Binary files /dev/null and b/website/blocks/hopper_inside.png differ diff --git a/website/blocks/hopper_outside.png b/website/blocks/hopper_outside.png new file mode 100644 index 0000000..50ed8d5 Binary files /dev/null and b/website/blocks/hopper_outside.png differ diff --git a/website/blocks/hopper_top.png b/website/blocks/hopper_top.png new file mode 100644 index 0000000..e0dbe96 Binary files /dev/null and b/website/blocks/hopper_top.png differ diff --git a/website/blocks/ice.png b/website/blocks/ice.png new file mode 100644 index 0000000..ac946e9 Binary files /dev/null and b/website/blocks/ice.png differ diff --git a/website/blocks/ice_packed.png b/website/blocks/ice_packed.png new file mode 100644 index 0000000..50f0f34 Binary files /dev/null and b/website/blocks/ice_packed.png differ diff --git a/website/blocks/iron_bars.png b/website/blocks/iron_bars.png new file mode 100644 index 0000000..732807f Binary files /dev/null and b/website/blocks/iron_bars.png differ diff --git a/website/blocks/iron_block.png b/website/blocks/iron_block.png new file mode 100644 index 0000000..7816799 Binary files /dev/null and b/website/blocks/iron_block.png differ diff --git a/website/blocks/iron_ore.png b/website/blocks/iron_ore.png new file mode 100644 index 0000000..250d8bb Binary files /dev/null and b/website/blocks/iron_ore.png differ diff --git a/website/blocks/iron_trapdoor.png b/website/blocks/iron_trapdoor.png new file mode 100644 index 0000000..d3c974c Binary files /dev/null and b/website/blocks/iron_trapdoor.png differ diff --git a/website/blocks/itemframe_background.png b/website/blocks/itemframe_background.png new file mode 100644 index 0000000..b40ad65 Binary files /dev/null and b/website/blocks/itemframe_background.png differ diff --git a/website/blocks/jukebox_side.png b/website/blocks/jukebox_side.png new file mode 100644 index 0000000..a3c27c1 Binary files /dev/null and b/website/blocks/jukebox_side.png differ diff --git a/website/blocks/jukebox_top.png b/website/blocks/jukebox_top.png new file mode 100644 index 0000000..92ddb15 Binary files /dev/null and b/website/blocks/jukebox_top.png differ diff --git a/website/blocks/ladder.png b/website/blocks/ladder.png new file mode 100644 index 0000000..e2ec5f2 Binary files /dev/null and b/website/blocks/ladder.png differ diff --git a/website/blocks/lapis_block.png b/website/blocks/lapis_block.png new file mode 100644 index 0000000..0271489 Binary files /dev/null and b/website/blocks/lapis_block.png differ diff --git a/website/blocks/lapis_ore.png b/website/blocks/lapis_ore.png new file mode 100644 index 0000000..6144236 Binary files /dev/null and b/website/blocks/lapis_ore.png differ diff --git a/website/blocks/lava_flow.png b/website/blocks/lava_flow.png new file mode 100644 index 0000000..af07f91 Binary files /dev/null and b/website/blocks/lava_flow.png differ diff --git a/website/blocks/lava_flow.png.mcmeta b/website/blocks/lava_flow.png.mcmeta new file mode 100644 index 0000000..8e55e43 --- /dev/null +++ b/website/blocks/lava_flow.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 3 + } +} diff --git a/website/blocks/lava_still.png b/website/blocks/lava_still.png new file mode 100644 index 0000000..78bb29d Binary files /dev/null and b/website/blocks/lava_still.png differ diff --git a/website/blocks/lava_still.png.mcmeta b/website/blocks/lava_still.png.mcmeta new file mode 100644 index 0000000..7ceb363 --- /dev/null +++ b/website/blocks/lava_still.png.mcmeta @@ -0,0 +1,45 @@ +{ + "animation": { + "frametime": 2, + "frames": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 18, + 17, + 16, + 15, + 14, + 13, + 12, + 11, + 10, + 9, + 8, + 7, + 6, + 5, + 4, + 3, + 2, + 1 + ] + } +} \ No newline at end of file diff --git a/website/blocks/leaves_acacia.png b/website/blocks/leaves_acacia.png new file mode 100644 index 0000000..d54eb17 Binary files /dev/null and b/website/blocks/leaves_acacia.png differ diff --git a/website/blocks/leaves_big_oak.png b/website/blocks/leaves_big_oak.png new file mode 100644 index 0000000..a6773af Binary files /dev/null and b/website/blocks/leaves_big_oak.png differ diff --git a/website/blocks/leaves_birch.png b/website/blocks/leaves_birch.png new file mode 100644 index 0000000..a6773af Binary files /dev/null and b/website/blocks/leaves_birch.png differ diff --git a/website/blocks/leaves_jungle.png b/website/blocks/leaves_jungle.png new file mode 100644 index 0000000..e0cb935 Binary files /dev/null and b/website/blocks/leaves_jungle.png differ diff --git a/website/blocks/leaves_oak.png b/website/blocks/leaves_oak.png new file mode 100644 index 0000000..a6773af Binary files /dev/null and b/website/blocks/leaves_oak.png differ diff --git a/website/blocks/leaves_spruce.png b/website/blocks/leaves_spruce.png new file mode 100644 index 0000000..602eab8 Binary files /dev/null and b/website/blocks/leaves_spruce.png differ diff --git a/website/blocks/lever.png b/website/blocks/lever.png new file mode 100644 index 0000000..051187f Binary files /dev/null and b/website/blocks/lever.png differ diff --git a/website/blocks/log_acacia.png b/website/blocks/log_acacia.png new file mode 100644 index 0000000..d221210 Binary files /dev/null and b/website/blocks/log_acacia.png differ diff --git a/website/blocks/log_acacia_top.png b/website/blocks/log_acacia_top.png new file mode 100644 index 0000000..3d44878 Binary files /dev/null and b/website/blocks/log_acacia_top.png differ diff --git a/website/blocks/log_big_oak.png b/website/blocks/log_big_oak.png new file mode 100644 index 0000000..d4da03e Binary files /dev/null and b/website/blocks/log_big_oak.png differ diff --git a/website/blocks/log_big_oak_top.png b/website/blocks/log_big_oak_top.png new file mode 100644 index 0000000..99137b6 Binary files /dev/null and b/website/blocks/log_big_oak_top.png differ diff --git a/website/blocks/log_birch.png b/website/blocks/log_birch.png new file mode 100644 index 0000000..bfb209d Binary files /dev/null and b/website/blocks/log_birch.png differ diff --git a/website/blocks/log_birch_top.png b/website/blocks/log_birch_top.png new file mode 100644 index 0000000..f9b94f4 Binary files /dev/null and b/website/blocks/log_birch_top.png differ diff --git a/website/blocks/log_jungle.png b/website/blocks/log_jungle.png new file mode 100644 index 0000000..0b7120a Binary files /dev/null and b/website/blocks/log_jungle.png differ diff --git a/website/blocks/log_jungle_top.png b/website/blocks/log_jungle_top.png new file mode 100644 index 0000000..26b0361 Binary files /dev/null and b/website/blocks/log_jungle_top.png differ diff --git a/website/blocks/log_oak.png b/website/blocks/log_oak.png new file mode 100644 index 0000000..914cb5f Binary files /dev/null and b/website/blocks/log_oak.png differ diff --git a/website/blocks/log_oak_top.png b/website/blocks/log_oak_top.png new file mode 100644 index 0000000..7a44e77 Binary files /dev/null and b/website/blocks/log_oak_top.png differ diff --git a/website/blocks/log_spruce.png b/website/blocks/log_spruce.png new file mode 100644 index 0000000..dc1aa2f Binary files /dev/null and b/website/blocks/log_spruce.png differ diff --git a/website/blocks/log_spruce_top.png b/website/blocks/log_spruce_top.png new file mode 100644 index 0000000..280c64e Binary files /dev/null and b/website/blocks/log_spruce_top.png differ diff --git a/website/blocks/melon_side.png b/website/blocks/melon_side.png new file mode 100644 index 0000000..ec7b430 Binary files /dev/null and b/website/blocks/melon_side.png differ diff --git a/website/blocks/melon_stem_connected.png b/website/blocks/melon_stem_connected.png new file mode 100644 index 0000000..6a5c10e Binary files /dev/null and b/website/blocks/melon_stem_connected.png differ diff --git a/website/blocks/melon_stem_disconnected.png b/website/blocks/melon_stem_disconnected.png new file mode 100644 index 0000000..38065ef Binary files /dev/null and b/website/blocks/melon_stem_disconnected.png differ diff --git a/website/blocks/melon_top.png b/website/blocks/melon_top.png new file mode 100644 index 0000000..65cf169 Binary files /dev/null and b/website/blocks/melon_top.png differ diff --git a/website/blocks/mob_spawner.png b/website/blocks/mob_spawner.png new file mode 100644 index 0000000..7d55217 Binary files /dev/null and b/website/blocks/mob_spawner.png differ diff --git a/website/blocks/mushroom_block_inside.png b/website/blocks/mushroom_block_inside.png new file mode 100644 index 0000000..f0e7a04 Binary files /dev/null and b/website/blocks/mushroom_block_inside.png differ diff --git a/website/blocks/mushroom_block_skin_brown.png b/website/blocks/mushroom_block_skin_brown.png new file mode 100644 index 0000000..1f52ba8 Binary files /dev/null and b/website/blocks/mushroom_block_skin_brown.png differ diff --git a/website/blocks/mushroom_block_skin_red.png b/website/blocks/mushroom_block_skin_red.png new file mode 100644 index 0000000..66cf12c Binary files /dev/null and b/website/blocks/mushroom_block_skin_red.png differ diff --git a/website/blocks/mushroom_block_skin_stem.png b/website/blocks/mushroom_block_skin_stem.png new file mode 100644 index 0000000..83c0840 Binary files /dev/null and b/website/blocks/mushroom_block_skin_stem.png differ diff --git a/website/blocks/mushroom_brown.png b/website/blocks/mushroom_brown.png new file mode 100644 index 0000000..bf33d34 Binary files /dev/null and b/website/blocks/mushroom_brown.png differ diff --git a/website/blocks/mushroom_red.png b/website/blocks/mushroom_red.png new file mode 100644 index 0000000..1b332b7 Binary files /dev/null and b/website/blocks/mushroom_red.png differ diff --git a/website/blocks/mycelium_side.png b/website/blocks/mycelium_side.png new file mode 100644 index 0000000..5547425 Binary files /dev/null and b/website/blocks/mycelium_side.png differ diff --git a/website/blocks/mycelium_top.png b/website/blocks/mycelium_top.png new file mode 100644 index 0000000..088a825 Binary files /dev/null and b/website/blocks/mycelium_top.png differ diff --git a/website/blocks/nether_brick.png b/website/blocks/nether_brick.png new file mode 100644 index 0000000..caaf66f Binary files /dev/null and b/website/blocks/nether_brick.png differ diff --git a/website/blocks/nether_wart_stage_0.png b/website/blocks/nether_wart_stage_0.png new file mode 100644 index 0000000..514a95b Binary files /dev/null and b/website/blocks/nether_wart_stage_0.png differ diff --git a/website/blocks/nether_wart_stage_1.png b/website/blocks/nether_wart_stage_1.png new file mode 100644 index 0000000..b4ad0d1 Binary files /dev/null and b/website/blocks/nether_wart_stage_1.png differ diff --git a/website/blocks/nether_wart_stage_2.png b/website/blocks/nether_wart_stage_2.png new file mode 100644 index 0000000..b9b6743 Binary files /dev/null and b/website/blocks/nether_wart_stage_2.png differ diff --git a/website/blocks/netherrack.png b/website/blocks/netherrack.png new file mode 100644 index 0000000..88129c4 Binary files /dev/null and b/website/blocks/netherrack.png differ diff --git a/website/blocks/noteblock.png b/website/blocks/noteblock.png new file mode 100644 index 0000000..a3c27c1 Binary files /dev/null and b/website/blocks/noteblock.png differ diff --git a/website/blocks/obsidian.png b/website/blocks/obsidian.png new file mode 100644 index 0000000..ff0a683 Binary files /dev/null and b/website/blocks/obsidian.png differ diff --git a/website/blocks/piston_bottom.png b/website/blocks/piston_bottom.png new file mode 100644 index 0000000..a3a5a08 Binary files /dev/null and b/website/blocks/piston_bottom.png differ diff --git a/website/blocks/piston_inner.png b/website/blocks/piston_inner.png new file mode 100644 index 0000000..1043929 Binary files /dev/null and b/website/blocks/piston_inner.png differ diff --git a/website/blocks/piston_side.png b/website/blocks/piston_side.png new file mode 100644 index 0000000..634f54a Binary files /dev/null and b/website/blocks/piston_side.png differ diff --git a/website/blocks/piston_top_normal.png b/website/blocks/piston_top_normal.png new file mode 100644 index 0000000..eeaadab Binary files /dev/null and b/website/blocks/piston_top_normal.png differ diff --git a/website/blocks/piston_top_sticky.png b/website/blocks/piston_top_sticky.png new file mode 100644 index 0000000..6ddd4ad Binary files /dev/null and b/website/blocks/piston_top_sticky.png differ diff --git a/website/blocks/planks_acacia.png b/website/blocks/planks_acacia.png new file mode 100644 index 0000000..6858c51 Binary files /dev/null and b/website/blocks/planks_acacia.png differ diff --git a/website/blocks/planks_big_oak.png b/website/blocks/planks_big_oak.png new file mode 100644 index 0000000..e3fd4ea Binary files /dev/null and b/website/blocks/planks_big_oak.png differ diff --git a/website/blocks/planks_birch.png b/website/blocks/planks_birch.png new file mode 100644 index 0000000..b113e3a Binary files /dev/null and b/website/blocks/planks_birch.png differ diff --git a/website/blocks/planks_jungle.png b/website/blocks/planks_jungle.png new file mode 100644 index 0000000..e3fe82d Binary files /dev/null and b/website/blocks/planks_jungle.png differ diff --git a/website/blocks/planks_oak.png b/website/blocks/planks_oak.png new file mode 100644 index 0000000..346f77d Binary files /dev/null and b/website/blocks/planks_oak.png differ diff --git a/website/blocks/planks_spruce.png b/website/blocks/planks_spruce.png new file mode 100644 index 0000000..f45fa94 Binary files /dev/null and b/website/blocks/planks_spruce.png differ diff --git a/website/blocks/portal.png b/website/blocks/portal.png new file mode 100644 index 0000000..96859e2 Binary files /dev/null and b/website/blocks/portal.png differ diff --git a/website/blocks/portal.png.mcmeta b/website/blocks/portal.png.mcmeta new file mode 100644 index 0000000..4f0718a --- /dev/null +++ b/website/blocks/portal.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": {} +} \ No newline at end of file diff --git a/website/blocks/potatoes_stage_0.png b/website/blocks/potatoes_stage_0.png new file mode 100644 index 0000000..c1ef732 Binary files /dev/null and b/website/blocks/potatoes_stage_0.png differ diff --git a/website/blocks/potatoes_stage_1.png b/website/blocks/potatoes_stage_1.png new file mode 100644 index 0000000..1275f4f Binary files /dev/null and b/website/blocks/potatoes_stage_1.png differ diff --git a/website/blocks/potatoes_stage_2.png b/website/blocks/potatoes_stage_2.png new file mode 100644 index 0000000..b7347df Binary files /dev/null and b/website/blocks/potatoes_stage_2.png differ diff --git a/website/blocks/potatoes_stage_3.png b/website/blocks/potatoes_stage_3.png new file mode 100644 index 0000000..d7e8185 Binary files /dev/null and b/website/blocks/potatoes_stage_3.png differ diff --git a/website/blocks/prismarine_bricks.png b/website/blocks/prismarine_bricks.png new file mode 100644 index 0000000..5890690 Binary files /dev/null and b/website/blocks/prismarine_bricks.png differ diff --git a/website/blocks/prismarine_dark.png b/website/blocks/prismarine_dark.png new file mode 100644 index 0000000..07bed85 Binary files /dev/null and b/website/blocks/prismarine_dark.png differ diff --git a/website/blocks/prismarine_rough.png b/website/blocks/prismarine_rough.png new file mode 100644 index 0000000..fe133e2 Binary files /dev/null and b/website/blocks/prismarine_rough.png differ diff --git a/website/blocks/prismarine_rough.png.mcmeta b/website/blocks/prismarine_rough.png.mcmeta new file mode 100644 index 0000000..410b327 --- /dev/null +++ b/website/blocks/prismarine_rough.png.mcmeta @@ -0,0 +1,30 @@ +{ + "animation": { + "frametime": 300, + "interpolate": true, + "frames": [ + 0, + 1, + 0, + 2, + 0, + 3, + 0, + 1, + 2, + 1, + 3, + 1, + 0, + 2, + 1, + 2, + 3, + 2, + 0, + 3, + 1, + 3 + ] + } +} diff --git a/website/blocks/pumpkin_face_off.png b/website/blocks/pumpkin_face_off.png new file mode 100644 index 0000000..ecef025 Binary files /dev/null and b/website/blocks/pumpkin_face_off.png differ diff --git a/website/blocks/pumpkin_face_on.png b/website/blocks/pumpkin_face_on.png new file mode 100644 index 0000000..907f499 Binary files /dev/null and b/website/blocks/pumpkin_face_on.png differ diff --git a/website/blocks/pumpkin_side.png b/website/blocks/pumpkin_side.png new file mode 100644 index 0000000..75dfc47 Binary files /dev/null and b/website/blocks/pumpkin_side.png differ diff --git a/website/blocks/pumpkin_stem_connected.png b/website/blocks/pumpkin_stem_connected.png new file mode 100644 index 0000000..6a5c10e Binary files /dev/null and b/website/blocks/pumpkin_stem_connected.png differ diff --git a/website/blocks/pumpkin_stem_disconnected.png b/website/blocks/pumpkin_stem_disconnected.png new file mode 100644 index 0000000..38065ef Binary files /dev/null and b/website/blocks/pumpkin_stem_disconnected.png differ diff --git a/website/blocks/pumpkin_top.png b/website/blocks/pumpkin_top.png new file mode 100644 index 0000000..297ce3c Binary files /dev/null and b/website/blocks/pumpkin_top.png differ diff --git a/website/blocks/quartz_block_bottom.png b/website/blocks/quartz_block_bottom.png new file mode 100644 index 0000000..7e16c7c Binary files /dev/null and b/website/blocks/quartz_block_bottom.png differ diff --git a/website/blocks/quartz_block_chiseled.png b/website/blocks/quartz_block_chiseled.png new file mode 100644 index 0000000..80465a1 Binary files /dev/null and b/website/blocks/quartz_block_chiseled.png differ diff --git a/website/blocks/quartz_block_chiseled_top.png b/website/blocks/quartz_block_chiseled_top.png new file mode 100644 index 0000000..44073e5 Binary files /dev/null and b/website/blocks/quartz_block_chiseled_top.png differ diff --git a/website/blocks/quartz_block_lines.png b/website/blocks/quartz_block_lines.png new file mode 100644 index 0000000..184ecd2 Binary files /dev/null and b/website/blocks/quartz_block_lines.png differ diff --git a/website/blocks/quartz_block_lines_top.png b/website/blocks/quartz_block_lines_top.png new file mode 100644 index 0000000..6d20379 Binary files /dev/null and b/website/blocks/quartz_block_lines_top.png differ diff --git a/website/blocks/quartz_block_side.png b/website/blocks/quartz_block_side.png new file mode 100644 index 0000000..a2cd2ca Binary files /dev/null and b/website/blocks/quartz_block_side.png differ diff --git a/website/blocks/quartz_block_top.png b/website/blocks/quartz_block_top.png new file mode 100644 index 0000000..a2cd2ca Binary files /dev/null and b/website/blocks/quartz_block_top.png differ diff --git a/website/blocks/quartz_ore.png b/website/blocks/quartz_ore.png new file mode 100644 index 0000000..4d758c1 Binary files /dev/null and b/website/blocks/quartz_ore.png differ diff --git a/website/blocks/rail_activator.png b/website/blocks/rail_activator.png new file mode 100644 index 0000000..ce115ba Binary files /dev/null and b/website/blocks/rail_activator.png differ diff --git a/website/blocks/rail_activator_powered.png b/website/blocks/rail_activator_powered.png new file mode 100644 index 0000000..a3aaca9 Binary files /dev/null and b/website/blocks/rail_activator_powered.png differ diff --git a/website/blocks/rail_detector.png b/website/blocks/rail_detector.png new file mode 100644 index 0000000..92c1466 Binary files /dev/null and b/website/blocks/rail_detector.png differ diff --git a/website/blocks/rail_detector_powered.png b/website/blocks/rail_detector_powered.png new file mode 100644 index 0000000..a1c6e6b Binary files /dev/null and b/website/blocks/rail_detector_powered.png differ diff --git a/website/blocks/rail_golden.png b/website/blocks/rail_golden.png new file mode 100644 index 0000000..1fc52c3 Binary files /dev/null and b/website/blocks/rail_golden.png differ diff --git a/website/blocks/rail_golden_powered.png b/website/blocks/rail_golden_powered.png new file mode 100644 index 0000000..bd343be Binary files /dev/null and b/website/blocks/rail_golden_powered.png differ diff --git a/website/blocks/rail_normal.png b/website/blocks/rail_normal.png new file mode 100644 index 0000000..d609236 Binary files /dev/null and b/website/blocks/rail_normal.png differ diff --git a/website/blocks/rail_normal_turned.png b/website/blocks/rail_normal_turned.png new file mode 100644 index 0000000..f394a23 Binary files /dev/null and b/website/blocks/rail_normal_turned.png differ diff --git a/website/blocks/red_sand.png b/website/blocks/red_sand.png new file mode 100644 index 0000000..b216a42 Binary files /dev/null and b/website/blocks/red_sand.png differ diff --git a/website/blocks/red_sandstone_bottom.png b/website/blocks/red_sandstone_bottom.png new file mode 100644 index 0000000..7e7a8c9 Binary files /dev/null and b/website/blocks/red_sandstone_bottom.png differ diff --git a/website/blocks/red_sandstone_carved.png b/website/blocks/red_sandstone_carved.png new file mode 100644 index 0000000..41070da Binary files /dev/null and b/website/blocks/red_sandstone_carved.png differ diff --git a/website/blocks/red_sandstone_normal.png b/website/blocks/red_sandstone_normal.png new file mode 100644 index 0000000..f641784 Binary files /dev/null and b/website/blocks/red_sandstone_normal.png differ diff --git a/website/blocks/red_sandstone_smooth.png b/website/blocks/red_sandstone_smooth.png new file mode 100644 index 0000000..fd44a72 Binary files /dev/null and b/website/blocks/red_sandstone_smooth.png differ diff --git a/website/blocks/red_sandstone_top.png b/website/blocks/red_sandstone_top.png new file mode 100644 index 0000000..794dbeb Binary files /dev/null and b/website/blocks/red_sandstone_top.png differ diff --git a/website/blocks/redstone_block.png b/website/blocks/redstone_block.png new file mode 100644 index 0000000..fcf6b40 Binary files /dev/null and b/website/blocks/redstone_block.png differ diff --git a/website/blocks/redstone_dust_cross.png b/website/blocks/redstone_dust_cross.png new file mode 100644 index 0000000..dcec893 Binary files /dev/null and b/website/blocks/redstone_dust_cross.png differ diff --git a/website/blocks/redstone_dust_cross_overlay.png b/website/blocks/redstone_dust_cross_overlay.png new file mode 100644 index 0000000..96729e1 Binary files /dev/null and b/website/blocks/redstone_dust_cross_overlay.png differ diff --git a/website/blocks/redstone_dust_line.png b/website/blocks/redstone_dust_line.png new file mode 100644 index 0000000..ff0fb23 Binary files /dev/null and b/website/blocks/redstone_dust_line.png differ diff --git a/website/blocks/redstone_dust_line_overlay.png b/website/blocks/redstone_dust_line_overlay.png new file mode 100644 index 0000000..9f24cbc Binary files /dev/null and b/website/blocks/redstone_dust_line_overlay.png differ diff --git a/website/blocks/redstone_lamp_off.png b/website/blocks/redstone_lamp_off.png new file mode 100644 index 0000000..522765b Binary files /dev/null and b/website/blocks/redstone_lamp_off.png differ diff --git a/website/blocks/redstone_lamp_on.png b/website/blocks/redstone_lamp_on.png new file mode 100644 index 0000000..9562ef3 Binary files /dev/null and b/website/blocks/redstone_lamp_on.png differ diff --git a/website/blocks/redstone_ore.png b/website/blocks/redstone_ore.png new file mode 100644 index 0000000..575a488 Binary files /dev/null and b/website/blocks/redstone_ore.png differ diff --git a/website/blocks/redstone_torch_off.png b/website/blocks/redstone_torch_off.png new file mode 100644 index 0000000..635eabd Binary files /dev/null and b/website/blocks/redstone_torch_off.png differ diff --git a/website/blocks/redstone_torch_on.png b/website/blocks/redstone_torch_on.png new file mode 100644 index 0000000..2983d6c Binary files /dev/null and b/website/blocks/redstone_torch_on.png differ diff --git a/website/blocks/reeds.png b/website/blocks/reeds.png new file mode 100644 index 0000000..64bbfe0 Binary files /dev/null and b/website/blocks/reeds.png differ diff --git a/website/blocks/repeater_off.png b/website/blocks/repeater_off.png new file mode 100644 index 0000000..8634669 Binary files /dev/null and b/website/blocks/repeater_off.png differ diff --git a/website/blocks/repeater_on.png b/website/blocks/repeater_on.png new file mode 100644 index 0000000..d71d0d9 Binary files /dev/null and b/website/blocks/repeater_on.png differ diff --git a/website/blocks/sand.png b/website/blocks/sand.png new file mode 100644 index 0000000..86b9654 Binary files /dev/null and b/website/blocks/sand.png differ diff --git a/website/blocks/sandstone_bottom.png b/website/blocks/sandstone_bottom.png new file mode 100644 index 0000000..e102220 Binary files /dev/null and b/website/blocks/sandstone_bottom.png differ diff --git a/website/blocks/sandstone_carved.png b/website/blocks/sandstone_carved.png new file mode 100644 index 0000000..9bd7fa1 Binary files /dev/null and b/website/blocks/sandstone_carved.png differ diff --git a/website/blocks/sandstone_normal.png b/website/blocks/sandstone_normal.png new file mode 100644 index 0000000..1b79145 Binary files /dev/null and b/website/blocks/sandstone_normal.png differ diff --git a/website/blocks/sandstone_smooth.png b/website/blocks/sandstone_smooth.png new file mode 100644 index 0000000..ef118bd Binary files /dev/null and b/website/blocks/sandstone_smooth.png differ diff --git a/website/blocks/sandstone_top.png b/website/blocks/sandstone_top.png new file mode 100644 index 0000000..bb5b157 Binary files /dev/null and b/website/blocks/sandstone_top.png differ diff --git a/website/blocks/sapling_acacia.png b/website/blocks/sapling_acacia.png new file mode 100644 index 0000000..a1215cb Binary files /dev/null and b/website/blocks/sapling_acacia.png differ diff --git a/website/blocks/sapling_birch.png b/website/blocks/sapling_birch.png new file mode 100644 index 0000000..b0dacc5 Binary files /dev/null and b/website/blocks/sapling_birch.png differ diff --git a/website/blocks/sapling_jungle.png b/website/blocks/sapling_jungle.png new file mode 100644 index 0000000..4e10b35 Binary files /dev/null and b/website/blocks/sapling_jungle.png differ diff --git a/website/blocks/sapling_oak.png b/website/blocks/sapling_oak.png new file mode 100644 index 0000000..1bf1bfa Binary files /dev/null and b/website/blocks/sapling_oak.png differ diff --git a/website/blocks/sapling_roofed_oak.png b/website/blocks/sapling_roofed_oak.png new file mode 100644 index 0000000..dcf5588 Binary files /dev/null and b/website/blocks/sapling_roofed_oak.png differ diff --git a/website/blocks/sapling_spruce.png b/website/blocks/sapling_spruce.png new file mode 100644 index 0000000..5767d48 Binary files /dev/null and b/website/blocks/sapling_spruce.png differ diff --git a/website/blocks/sea_lantern.png b/website/blocks/sea_lantern.png new file mode 100644 index 0000000..4f08fd2 Binary files /dev/null and b/website/blocks/sea_lantern.png differ diff --git a/website/blocks/sea_lantern.png.mcmeta b/website/blocks/sea_lantern.png.mcmeta new file mode 100644 index 0000000..e8ac9bc --- /dev/null +++ b/website/blocks/sea_lantern.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 5 + } +} diff --git a/website/blocks/slime.png b/website/blocks/slime.png new file mode 100644 index 0000000..6dbe5cb Binary files /dev/null and b/website/blocks/slime.png differ diff --git a/website/blocks/snow.png b/website/blocks/snow.png new file mode 100644 index 0000000..5c146cd Binary files /dev/null and b/website/blocks/snow.png differ diff --git a/website/blocks/soul_sand.png b/website/blocks/soul_sand.png new file mode 100644 index 0000000..fca7e8f Binary files /dev/null and b/website/blocks/soul_sand.png differ diff --git a/website/blocks/sponge.png b/website/blocks/sponge.png new file mode 100644 index 0000000..7850703 Binary files /dev/null and b/website/blocks/sponge.png differ diff --git a/website/blocks/sponge_wet.png b/website/blocks/sponge_wet.png new file mode 100644 index 0000000..d024995 Binary files /dev/null and b/website/blocks/sponge_wet.png differ diff --git a/website/blocks/stone.png b/website/blocks/stone.png new file mode 100644 index 0000000..87e19ff Binary files /dev/null and b/website/blocks/stone.png differ diff --git a/website/blocks/stone_andesite.png b/website/blocks/stone_andesite.png new file mode 100644 index 0000000..680a899 Binary files /dev/null and b/website/blocks/stone_andesite.png differ diff --git a/website/blocks/stone_andesite_smooth.png b/website/blocks/stone_andesite_smooth.png new file mode 100644 index 0000000..a77809c Binary files /dev/null and b/website/blocks/stone_andesite_smooth.png differ diff --git a/website/blocks/stone_diorite.png b/website/blocks/stone_diorite.png new file mode 100644 index 0000000..711c838 Binary files /dev/null and b/website/blocks/stone_diorite.png differ diff --git a/website/blocks/stone_diorite_smooth.png b/website/blocks/stone_diorite_smooth.png new file mode 100644 index 0000000..8b4f8e3 Binary files /dev/null and b/website/blocks/stone_diorite_smooth.png differ diff --git a/website/blocks/stone_granite.png b/website/blocks/stone_granite.png new file mode 100644 index 0000000..07c7af8 Binary files /dev/null and b/website/blocks/stone_granite.png differ diff --git a/website/blocks/stone_granite_smooth.png b/website/blocks/stone_granite_smooth.png new file mode 100644 index 0000000..d5b37f1 Binary files /dev/null and b/website/blocks/stone_granite_smooth.png differ diff --git a/website/blocks/stone_slab_side.png b/website/blocks/stone_slab_side.png new file mode 100644 index 0000000..fe2a204 Binary files /dev/null and b/website/blocks/stone_slab_side.png differ diff --git a/website/blocks/stone_slab_top.png b/website/blocks/stone_slab_top.png new file mode 100644 index 0000000..090657d Binary files /dev/null and b/website/blocks/stone_slab_top.png differ diff --git a/website/blocks/stonebrick.png b/website/blocks/stonebrick.png new file mode 100644 index 0000000..69138cf Binary files /dev/null and b/website/blocks/stonebrick.png differ diff --git a/website/blocks/stonebrick_carved.png b/website/blocks/stonebrick_carved.png new file mode 100644 index 0000000..b7e88db Binary files /dev/null and b/website/blocks/stonebrick_carved.png differ diff --git a/website/blocks/stonebrick_cracked.png b/website/blocks/stonebrick_cracked.png new file mode 100644 index 0000000..918a884 Binary files /dev/null and b/website/blocks/stonebrick_cracked.png differ diff --git a/website/blocks/stonebrick_mossy.png b/website/blocks/stonebrick_mossy.png new file mode 100644 index 0000000..5b9fe37 Binary files /dev/null and b/website/blocks/stonebrick_mossy.png differ diff --git a/website/blocks/tallgrass.png b/website/blocks/tallgrass.png new file mode 100644 index 0000000..2869848 Binary files /dev/null and b/website/blocks/tallgrass.png differ diff --git a/website/blocks/tnt_bottom.png b/website/blocks/tnt_bottom.png new file mode 100644 index 0000000..cc2e586 Binary files /dev/null and b/website/blocks/tnt_bottom.png differ diff --git a/website/blocks/tnt_side.png b/website/blocks/tnt_side.png new file mode 100644 index 0000000..21109fb Binary files /dev/null and b/website/blocks/tnt_side.png differ diff --git a/website/blocks/tnt_top.png b/website/blocks/tnt_top.png new file mode 100644 index 0000000..ceb44b6 Binary files /dev/null and b/website/blocks/tnt_top.png differ diff --git a/website/blocks/torch_on.png b/website/blocks/torch_on.png new file mode 100644 index 0000000..a2ce41b Binary files /dev/null and b/website/blocks/torch_on.png differ diff --git a/website/blocks/trapdoor.png b/website/blocks/trapdoor.png new file mode 100644 index 0000000..4eadefc Binary files /dev/null and b/website/blocks/trapdoor.png differ diff --git a/website/blocks/trip_wire.png b/website/blocks/trip_wire.png new file mode 100644 index 0000000..42126b8 Binary files /dev/null and b/website/blocks/trip_wire.png differ diff --git a/website/blocks/trip_wire_source.png b/website/blocks/trip_wire_source.png new file mode 100644 index 0000000..fbd464d Binary files /dev/null and b/website/blocks/trip_wire_source.png differ diff --git a/website/blocks/vine.png b/website/blocks/vine.png new file mode 100644 index 0000000..df5e435 Binary files /dev/null and b/website/blocks/vine.png differ diff --git a/website/blocks/water_flow.png b/website/blocks/water_flow.png new file mode 100644 index 0000000..e72280c Binary files /dev/null and b/website/blocks/water_flow.png differ diff --git a/website/blocks/water_flow.png.mcmeta b/website/blocks/water_flow.png.mcmeta new file mode 100644 index 0000000..4f0718a --- /dev/null +++ b/website/blocks/water_flow.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": {} +} \ No newline at end of file diff --git a/website/blocks/water_still.png b/website/blocks/water_still.png new file mode 100644 index 0000000..c7e90b0 Binary files /dev/null and b/website/blocks/water_still.png differ diff --git a/website/blocks/water_still.png.mcmeta b/website/blocks/water_still.png.mcmeta new file mode 100644 index 0000000..0645f48 --- /dev/null +++ b/website/blocks/water_still.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 2 + } +} diff --git a/website/blocks/waterlily.png b/website/blocks/waterlily.png new file mode 100644 index 0000000..f6c84f8 Binary files /dev/null and b/website/blocks/waterlily.png differ diff --git a/website/blocks/web.png b/website/blocks/web.png new file mode 100644 index 0000000..7c097f1 Binary files /dev/null and b/website/blocks/web.png differ diff --git a/website/blocks/wheat_stage_0.png b/website/blocks/wheat_stage_0.png new file mode 100644 index 0000000..185af6f Binary files /dev/null and b/website/blocks/wheat_stage_0.png differ diff --git a/website/blocks/wheat_stage_1.png b/website/blocks/wheat_stage_1.png new file mode 100644 index 0000000..67588c1 Binary files /dev/null and b/website/blocks/wheat_stage_1.png differ diff --git a/website/blocks/wheat_stage_2.png b/website/blocks/wheat_stage_2.png new file mode 100644 index 0000000..3d33792 Binary files /dev/null and b/website/blocks/wheat_stage_2.png differ diff --git a/website/blocks/wheat_stage_3.png b/website/blocks/wheat_stage_3.png new file mode 100644 index 0000000..4649f78 Binary files /dev/null and b/website/blocks/wheat_stage_3.png differ diff --git a/website/blocks/wheat_stage_4.png b/website/blocks/wheat_stage_4.png new file mode 100644 index 0000000..ac04b52 Binary files /dev/null and b/website/blocks/wheat_stage_4.png differ diff --git a/website/blocks/wheat_stage_5.png b/website/blocks/wheat_stage_5.png new file mode 100644 index 0000000..1ea81ac Binary files /dev/null and b/website/blocks/wheat_stage_5.png differ diff --git a/website/blocks/wheat_stage_6.png b/website/blocks/wheat_stage_6.png new file mode 100644 index 0000000..cb5f195 Binary files /dev/null and b/website/blocks/wheat_stage_6.png differ diff --git a/website/blocks/wheat_stage_7.png b/website/blocks/wheat_stage_7.png new file mode 100644 index 0000000..7acafb3 Binary files /dev/null and b/website/blocks/wheat_stage_7.png differ diff --git a/website/blocks/wool_colored_black.png b/website/blocks/wool_colored_black.png new file mode 100644 index 0000000..b74d5c9 Binary files /dev/null and b/website/blocks/wool_colored_black.png differ diff --git a/website/blocks/wool_colored_blue.png b/website/blocks/wool_colored_blue.png new file mode 100644 index 0000000..ce9515f Binary files /dev/null and b/website/blocks/wool_colored_blue.png differ diff --git a/website/blocks/wool_colored_brown.png b/website/blocks/wool_colored_brown.png new file mode 100644 index 0000000..b4dc3c5 Binary files /dev/null and b/website/blocks/wool_colored_brown.png differ diff --git a/website/blocks/wool_colored_cyan.png b/website/blocks/wool_colored_cyan.png new file mode 100644 index 0000000..ca0800a Binary files /dev/null and b/website/blocks/wool_colored_cyan.png differ diff --git a/website/blocks/wool_colored_gray.png b/website/blocks/wool_colored_gray.png new file mode 100644 index 0000000..6409ff2 Binary files /dev/null and b/website/blocks/wool_colored_gray.png differ diff --git a/website/blocks/wool_colored_green.png b/website/blocks/wool_colored_green.png new file mode 100644 index 0000000..a7be6d7 Binary files /dev/null and b/website/blocks/wool_colored_green.png differ diff --git a/website/blocks/wool_colored_light_blue.png b/website/blocks/wool_colored_light_blue.png new file mode 100644 index 0000000..72d9d9e Binary files /dev/null and b/website/blocks/wool_colored_light_blue.png differ diff --git a/website/blocks/wool_colored_lime.png b/website/blocks/wool_colored_lime.png new file mode 100644 index 0000000..bf56389 Binary files /dev/null and b/website/blocks/wool_colored_lime.png differ diff --git a/website/blocks/wool_colored_magenta.png b/website/blocks/wool_colored_magenta.png new file mode 100644 index 0000000..3af6747 Binary files /dev/null and b/website/blocks/wool_colored_magenta.png differ diff --git a/website/blocks/wool_colored_orange.png b/website/blocks/wool_colored_orange.png new file mode 100644 index 0000000..eefe6de Binary files /dev/null and b/website/blocks/wool_colored_orange.png differ diff --git a/website/blocks/wool_colored_pink.png b/website/blocks/wool_colored_pink.png new file mode 100644 index 0000000..c2785af Binary files /dev/null and b/website/blocks/wool_colored_pink.png differ diff --git a/website/blocks/wool_colored_purple.png b/website/blocks/wool_colored_purple.png new file mode 100644 index 0000000..76f68d6 Binary files /dev/null and b/website/blocks/wool_colored_purple.png differ diff --git a/website/blocks/wool_colored_red.png b/website/blocks/wool_colored_red.png new file mode 100644 index 0000000..0cff7a9 Binary files /dev/null and b/website/blocks/wool_colored_red.png differ diff --git a/website/blocks/wool_colored_silver.png b/website/blocks/wool_colored_silver.png new file mode 100644 index 0000000..756d9b0 Binary files /dev/null and b/website/blocks/wool_colored_silver.png differ diff --git a/website/blocks/wool_colored_white.png b/website/blocks/wool_colored_white.png new file mode 100644 index 0000000..abc7999 Binary files /dev/null and b/website/blocks/wool_colored_white.png differ diff --git a/website/blocks/wool_colored_yellow.png b/website/blocks/wool_colored_yellow.png new file mode 100644 index 0000000..4babaaa Binary files /dev/null and b/website/blocks/wool_colored_yellow.png differ diff --git a/website/items/apple.png b/website/items/apple.png new file mode 100644 index 0000000..3e2ee59 Binary files /dev/null and b/website/items/apple.png differ diff --git a/website/items/apple_golden.png b/website/items/apple_golden.png new file mode 100644 index 0000000..6201989 Binary files /dev/null and b/website/items/apple_golden.png differ diff --git a/website/items/arrow.png b/website/items/arrow.png new file mode 100644 index 0000000..4f748a0 Binary files /dev/null and b/website/items/arrow.png differ diff --git a/website/items/banner_base.png b/website/items/banner_base.png new file mode 100644 index 0000000..a074f2a Binary files /dev/null and b/website/items/banner_base.png differ diff --git a/website/items/banner_overlay.png b/website/items/banner_overlay.png new file mode 100644 index 0000000..560108f Binary files /dev/null and b/website/items/banner_overlay.png differ diff --git a/website/items/barrier.png b/website/items/barrier.png new file mode 100644 index 0000000..7ccfa7b Binary files /dev/null and b/website/items/barrier.png differ diff --git a/website/items/bed.png b/website/items/bed.png new file mode 100644 index 0000000..22a4cf0 Binary files /dev/null and b/website/items/bed.png differ diff --git a/website/items/beef_cooked.png b/website/items/beef_cooked.png new file mode 100644 index 0000000..7bf0fb9 Binary files /dev/null and b/website/items/beef_cooked.png differ diff --git a/website/items/beef_raw.png b/website/items/beef_raw.png new file mode 100644 index 0000000..82af4e7 Binary files /dev/null and b/website/items/beef_raw.png differ diff --git a/website/items/blaze_powder.png b/website/items/blaze_powder.png new file mode 100644 index 0000000..89c57d6 Binary files /dev/null and b/website/items/blaze_powder.png differ diff --git a/website/items/blaze_rod.png b/website/items/blaze_rod.png new file mode 100644 index 0000000..7050e10 Binary files /dev/null and b/website/items/blaze_rod.png differ diff --git a/website/items/boat.png b/website/items/boat.png new file mode 100644 index 0000000..235e0a2 Binary files /dev/null and b/website/items/boat.png differ diff --git a/website/items/bone.png b/website/items/bone.png new file mode 100644 index 0000000..3faca89 Binary files /dev/null and b/website/items/bone.png differ diff --git a/website/items/book_enchanted.png b/website/items/book_enchanted.png new file mode 100644 index 0000000..8742bee Binary files /dev/null and b/website/items/book_enchanted.png differ diff --git a/website/items/book_normal.png b/website/items/book_normal.png new file mode 100644 index 0000000..f791ae4 Binary files /dev/null and b/website/items/book_normal.png differ diff --git a/website/items/book_writable.png b/website/items/book_writable.png new file mode 100644 index 0000000..fa95246 Binary files /dev/null and b/website/items/book_writable.png differ diff --git a/website/items/book_written.png b/website/items/book_written.png new file mode 100644 index 0000000..b2a2aa8 Binary files /dev/null and b/website/items/book_written.png differ diff --git a/website/items/bow_pulling_0.png b/website/items/bow_pulling_0.png new file mode 100644 index 0000000..2022aab Binary files /dev/null and b/website/items/bow_pulling_0.png differ diff --git a/website/items/bow_pulling_1.png b/website/items/bow_pulling_1.png new file mode 100644 index 0000000..a132079 Binary files /dev/null and b/website/items/bow_pulling_1.png differ diff --git a/website/items/bow_pulling_2.png b/website/items/bow_pulling_2.png new file mode 100644 index 0000000..d459e68 Binary files /dev/null and b/website/items/bow_pulling_2.png differ diff --git a/website/items/bow_standby.png b/website/items/bow_standby.png new file mode 100644 index 0000000..d709b9c Binary files /dev/null and b/website/items/bow_standby.png differ diff --git a/website/items/bowl.png b/website/items/bowl.png new file mode 100644 index 0000000..63d16ad Binary files /dev/null and b/website/items/bowl.png differ diff --git a/website/items/bread.png b/website/items/bread.png new file mode 100644 index 0000000..c833604 Binary files /dev/null and b/website/items/bread.png differ diff --git a/website/items/brewing_stand.png b/website/items/brewing_stand.png new file mode 100644 index 0000000..97db9af Binary files /dev/null and b/website/items/brewing_stand.png differ diff --git a/website/items/brick.png b/website/items/brick.png new file mode 100644 index 0000000..11e74be Binary files /dev/null and b/website/items/brick.png differ diff --git a/website/items/bucket_empty.png b/website/items/bucket_empty.png new file mode 100644 index 0000000..f8e5369 Binary files /dev/null and b/website/items/bucket_empty.png differ diff --git a/website/items/bucket_lava.png b/website/items/bucket_lava.png new file mode 100644 index 0000000..13a1957 Binary files /dev/null and b/website/items/bucket_lava.png differ diff --git a/website/items/bucket_milk.png b/website/items/bucket_milk.png new file mode 100644 index 0000000..c77d92c Binary files /dev/null and b/website/items/bucket_milk.png differ diff --git a/website/items/bucket_water.png b/website/items/bucket_water.png new file mode 100644 index 0000000..2f36acc Binary files /dev/null and b/website/items/bucket_water.png differ diff --git a/website/items/cake.png b/website/items/cake.png new file mode 100644 index 0000000..46e94b8 Binary files /dev/null and b/website/items/cake.png differ diff --git a/website/items/carrot.png b/website/items/carrot.png new file mode 100644 index 0000000..2d08aab Binary files /dev/null and b/website/items/carrot.png differ diff --git a/website/items/carrot_golden.png b/website/items/carrot_golden.png new file mode 100644 index 0000000..e0f1ea6 Binary files /dev/null and b/website/items/carrot_golden.png differ diff --git a/website/items/carrot_on_a_stick.png b/website/items/carrot_on_a_stick.png new file mode 100644 index 0000000..9e88571 Binary files /dev/null and b/website/items/carrot_on_a_stick.png differ diff --git a/website/items/cauldron.png b/website/items/cauldron.png new file mode 100644 index 0000000..e3186eb Binary files /dev/null and b/website/items/cauldron.png differ diff --git a/website/items/chainmail_boots.png b/website/items/chainmail_boots.png new file mode 100644 index 0000000..54a4a15 Binary files /dev/null and b/website/items/chainmail_boots.png differ diff --git a/website/items/chainmail_chestplate.png b/website/items/chainmail_chestplate.png new file mode 100644 index 0000000..cd2115a Binary files /dev/null and b/website/items/chainmail_chestplate.png differ diff --git a/website/items/chainmail_helmet.png b/website/items/chainmail_helmet.png new file mode 100644 index 0000000..a143338 Binary files /dev/null and b/website/items/chainmail_helmet.png differ diff --git a/website/items/chainmail_leggings.png b/website/items/chainmail_leggings.png new file mode 100644 index 0000000..dae4b26 Binary files /dev/null and b/website/items/chainmail_leggings.png differ diff --git a/website/items/charcoal.png b/website/items/charcoal.png new file mode 100644 index 0000000..20d5b25 Binary files /dev/null and b/website/items/charcoal.png differ diff --git a/website/items/chicken_cooked.png b/website/items/chicken_cooked.png new file mode 100644 index 0000000..890b5b3 Binary files /dev/null and b/website/items/chicken_cooked.png differ diff --git a/website/items/chicken_raw.png b/website/items/chicken_raw.png new file mode 100644 index 0000000..6d25922 Binary files /dev/null and b/website/items/chicken_raw.png differ diff --git a/website/items/clay_ball.png b/website/items/clay_ball.png new file mode 100644 index 0000000..5103d6c Binary files /dev/null and b/website/items/clay_ball.png differ diff --git a/website/items/clock.png b/website/items/clock.png new file mode 100644 index 0000000..069a0ab Binary files /dev/null and b/website/items/clock.png differ diff --git a/website/items/clock.png.mcmeta b/website/items/clock.png.mcmeta new file mode 100644 index 0000000..4f0718a --- /dev/null +++ b/website/items/clock.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": {} +} \ No newline at end of file diff --git a/website/items/coal.png b/website/items/coal.png new file mode 100644 index 0000000..5563b6f Binary files /dev/null and b/website/items/coal.png differ diff --git a/website/items/comparator.png b/website/items/comparator.png new file mode 100644 index 0000000..28b8eec Binary files /dev/null and b/website/items/comparator.png differ diff --git a/website/items/compass.png b/website/items/compass.png new file mode 100644 index 0000000..9dcbdfe Binary files /dev/null and b/website/items/compass.png differ diff --git a/website/items/compass.png.mcmeta b/website/items/compass.png.mcmeta new file mode 100644 index 0000000..4f0718a --- /dev/null +++ b/website/items/compass.png.mcmeta @@ -0,0 +1,3 @@ +{ + "animation": {} +} \ No newline at end of file diff --git a/website/items/cookie.png b/website/items/cookie.png new file mode 100644 index 0000000..01fe56b Binary files /dev/null and b/website/items/cookie.png differ diff --git a/website/items/diamond.png b/website/items/diamond.png new file mode 100644 index 0000000..10e70a0 Binary files /dev/null and b/website/items/diamond.png differ diff --git a/website/items/diamond_axe.png b/website/items/diamond_axe.png new file mode 100644 index 0000000..7627f87 Binary files /dev/null and b/website/items/diamond_axe.png differ diff --git a/website/items/diamond_boots.png b/website/items/diamond_boots.png new file mode 100644 index 0000000..70d9e5f Binary files /dev/null and b/website/items/diamond_boots.png differ diff --git a/website/items/diamond_chestplate.png b/website/items/diamond_chestplate.png new file mode 100644 index 0000000..afdff93 Binary files /dev/null and b/website/items/diamond_chestplate.png differ diff --git a/website/items/diamond_helmet.png b/website/items/diamond_helmet.png new file mode 100644 index 0000000..1c88592 Binary files /dev/null and b/website/items/diamond_helmet.png differ diff --git a/website/items/diamond_hoe.png b/website/items/diamond_hoe.png new file mode 100644 index 0000000..c9a97e0 Binary files /dev/null and b/website/items/diamond_hoe.png differ diff --git a/website/items/diamond_horse_armor.png b/website/items/diamond_horse_armor.png new file mode 100644 index 0000000..b281aad Binary files /dev/null and b/website/items/diamond_horse_armor.png differ diff --git a/website/items/diamond_leggings.png b/website/items/diamond_leggings.png new file mode 100644 index 0000000..a99c896 Binary files /dev/null and b/website/items/diamond_leggings.png differ diff --git a/website/items/diamond_pickaxe.png b/website/items/diamond_pickaxe.png new file mode 100644 index 0000000..c279828 Binary files /dev/null and b/website/items/diamond_pickaxe.png differ diff --git a/website/items/diamond_shovel.png b/website/items/diamond_shovel.png new file mode 100644 index 0000000..e4a8992 Binary files /dev/null and b/website/items/diamond_shovel.png differ diff --git a/website/items/diamond_sword.png b/website/items/diamond_sword.png new file mode 100644 index 0000000..2a1552d Binary files /dev/null and b/website/items/diamond_sword.png differ diff --git a/website/items/door_acacia.png b/website/items/door_acacia.png new file mode 100644 index 0000000..c903484 Binary files /dev/null and b/website/items/door_acacia.png differ diff --git a/website/items/door_birch.png b/website/items/door_birch.png new file mode 100644 index 0000000..7c88c41 Binary files /dev/null and b/website/items/door_birch.png differ diff --git a/website/items/door_dark_oak.png b/website/items/door_dark_oak.png new file mode 100644 index 0000000..7862d9a Binary files /dev/null and b/website/items/door_dark_oak.png differ diff --git a/website/items/door_iron.png b/website/items/door_iron.png new file mode 100644 index 0000000..b6715ed Binary files /dev/null and b/website/items/door_iron.png differ diff --git a/website/items/door_jungle.png b/website/items/door_jungle.png new file mode 100644 index 0000000..cb3753d Binary files /dev/null and b/website/items/door_jungle.png differ diff --git a/website/items/door_spruce.png b/website/items/door_spruce.png new file mode 100644 index 0000000..4eddb7e Binary files /dev/null and b/website/items/door_spruce.png differ diff --git a/website/items/door_wood.png b/website/items/door_wood.png new file mode 100644 index 0000000..20b9be6 Binary files /dev/null and b/website/items/door_wood.png differ diff --git a/website/items/dye_powder_black.png b/website/items/dye_powder_black.png new file mode 100644 index 0000000..909bea5 Binary files /dev/null and b/website/items/dye_powder_black.png differ diff --git a/website/items/dye_powder_blue.png b/website/items/dye_powder_blue.png new file mode 100644 index 0000000..4713983 Binary files /dev/null and b/website/items/dye_powder_blue.png differ diff --git a/website/items/dye_powder_brown.png b/website/items/dye_powder_brown.png new file mode 100644 index 0000000..62eae8d Binary files /dev/null and b/website/items/dye_powder_brown.png differ diff --git a/website/items/dye_powder_cyan.png b/website/items/dye_powder_cyan.png new file mode 100644 index 0000000..7b10c11 Binary files /dev/null and b/website/items/dye_powder_cyan.png differ diff --git a/website/items/dye_powder_gray.png b/website/items/dye_powder_gray.png new file mode 100644 index 0000000..4fce7e7 Binary files /dev/null and b/website/items/dye_powder_gray.png differ diff --git a/website/items/dye_powder_green.png b/website/items/dye_powder_green.png new file mode 100644 index 0000000..009e058 Binary files /dev/null and b/website/items/dye_powder_green.png differ diff --git a/website/items/dye_powder_light_blue.png b/website/items/dye_powder_light_blue.png new file mode 100644 index 0000000..a8b45c9 Binary files /dev/null and b/website/items/dye_powder_light_blue.png differ diff --git a/website/items/dye_powder_lime.png b/website/items/dye_powder_lime.png new file mode 100644 index 0000000..7a78764 Binary files /dev/null and b/website/items/dye_powder_lime.png differ diff --git a/website/items/dye_powder_magenta.png b/website/items/dye_powder_magenta.png new file mode 100644 index 0000000..ea7342a Binary files /dev/null and b/website/items/dye_powder_magenta.png differ diff --git a/website/items/dye_powder_orange.png b/website/items/dye_powder_orange.png new file mode 100644 index 0000000..677a1aa Binary files /dev/null and b/website/items/dye_powder_orange.png differ diff --git a/website/items/dye_powder_pink.png b/website/items/dye_powder_pink.png new file mode 100644 index 0000000..1acc483 Binary files /dev/null and b/website/items/dye_powder_pink.png differ diff --git a/website/items/dye_powder_purple.png b/website/items/dye_powder_purple.png new file mode 100644 index 0000000..7d201c2 Binary files /dev/null and b/website/items/dye_powder_purple.png differ diff --git a/website/items/dye_powder_red.png b/website/items/dye_powder_red.png new file mode 100644 index 0000000..2d1a742 Binary files /dev/null and b/website/items/dye_powder_red.png differ diff --git a/website/items/dye_powder_silver.png b/website/items/dye_powder_silver.png new file mode 100644 index 0000000..fa9e501 Binary files /dev/null and b/website/items/dye_powder_silver.png differ diff --git a/website/items/dye_powder_white.png b/website/items/dye_powder_white.png new file mode 100644 index 0000000..5b1833b Binary files /dev/null and b/website/items/dye_powder_white.png differ diff --git a/website/items/dye_powder_yellow.png b/website/items/dye_powder_yellow.png new file mode 100644 index 0000000..95e0673 Binary files /dev/null and b/website/items/dye_powder_yellow.png differ diff --git a/website/items/egg.png b/website/items/egg.png new file mode 100644 index 0000000..a6fe2bf Binary files /dev/null and b/website/items/egg.png differ diff --git a/website/items/emerald.png b/website/items/emerald.png new file mode 100644 index 0000000..98d953e Binary files /dev/null and b/website/items/emerald.png differ diff --git a/website/items/empty_armor_slot_boots.png b/website/items/empty_armor_slot_boots.png new file mode 100644 index 0000000..fd7e05f Binary files /dev/null and b/website/items/empty_armor_slot_boots.png differ diff --git a/website/items/empty_armor_slot_chestplate.png b/website/items/empty_armor_slot_chestplate.png new file mode 100644 index 0000000..6e632b9 Binary files /dev/null and b/website/items/empty_armor_slot_chestplate.png differ diff --git a/website/items/empty_armor_slot_helmet.png b/website/items/empty_armor_slot_helmet.png new file mode 100644 index 0000000..3a455f3 Binary files /dev/null and b/website/items/empty_armor_slot_helmet.png differ diff --git a/website/items/empty_armor_slot_leggings.png b/website/items/empty_armor_slot_leggings.png new file mode 100644 index 0000000..28b2c49 Binary files /dev/null and b/website/items/empty_armor_slot_leggings.png differ diff --git a/website/items/ender_eye.png b/website/items/ender_eye.png new file mode 100644 index 0000000..8c4ef4e Binary files /dev/null and b/website/items/ender_eye.png differ diff --git a/website/items/ender_pearl.png b/website/items/ender_pearl.png new file mode 100644 index 0000000..4b752a6 Binary files /dev/null and b/website/items/ender_pearl.png differ diff --git a/website/items/experience_bottle.png b/website/items/experience_bottle.png new file mode 100644 index 0000000..ae4214f Binary files /dev/null and b/website/items/experience_bottle.png differ diff --git a/website/items/feather.png b/website/items/feather.png new file mode 100644 index 0000000..d4c3be5 Binary files /dev/null and b/website/items/feather.png differ diff --git a/website/items/fireball.png b/website/items/fireball.png new file mode 100644 index 0000000..d62a6f4 Binary files /dev/null and b/website/items/fireball.png differ diff --git a/website/items/fireworks.png b/website/items/fireworks.png new file mode 100644 index 0000000..f1e07fd Binary files /dev/null and b/website/items/fireworks.png differ diff --git a/website/items/fireworks_charge.png b/website/items/fireworks_charge.png new file mode 100644 index 0000000..5c89362 Binary files /dev/null and b/website/items/fireworks_charge.png differ diff --git a/website/items/fireworks_charge_overlay.png b/website/items/fireworks_charge_overlay.png new file mode 100644 index 0000000..d8b91a9 Binary files /dev/null and b/website/items/fireworks_charge_overlay.png differ diff --git a/website/items/fish_clownfish_raw.png b/website/items/fish_clownfish_raw.png new file mode 100644 index 0000000..41df72f Binary files /dev/null and b/website/items/fish_clownfish_raw.png differ diff --git a/website/items/fish_cod_cooked.png b/website/items/fish_cod_cooked.png new file mode 100644 index 0000000..87564c7 Binary files /dev/null and b/website/items/fish_cod_cooked.png differ diff --git a/website/items/fish_cod_raw.png b/website/items/fish_cod_raw.png new file mode 100644 index 0000000..32996bf Binary files /dev/null and b/website/items/fish_cod_raw.png differ diff --git a/website/items/fish_pufferfish_raw.png b/website/items/fish_pufferfish_raw.png new file mode 100644 index 0000000..aadbd88 Binary files /dev/null and b/website/items/fish_pufferfish_raw.png differ diff --git a/website/items/fish_salmon_cooked.png b/website/items/fish_salmon_cooked.png new file mode 100644 index 0000000..fb765ed Binary files /dev/null and b/website/items/fish_salmon_cooked.png differ diff --git a/website/items/fish_salmon_raw.png b/website/items/fish_salmon_raw.png new file mode 100644 index 0000000..68bcd69 Binary files /dev/null and b/website/items/fish_salmon_raw.png differ diff --git a/website/items/fishing_rod_cast.png b/website/items/fishing_rod_cast.png new file mode 100644 index 0000000..a5ab378 Binary files /dev/null and b/website/items/fishing_rod_cast.png differ diff --git a/website/items/fishing_rod_uncast.png b/website/items/fishing_rod_uncast.png new file mode 100644 index 0000000..d4b53f0 Binary files /dev/null and b/website/items/fishing_rod_uncast.png differ diff --git a/website/items/flint.png b/website/items/flint.png new file mode 100644 index 0000000..5f51093 Binary files /dev/null and b/website/items/flint.png differ diff --git a/website/items/flint_and_steel.png b/website/items/flint_and_steel.png new file mode 100644 index 0000000..77bc340 Binary files /dev/null and b/website/items/flint_and_steel.png differ diff --git a/website/items/flower_pot.png b/website/items/flower_pot.png new file mode 100644 index 0000000..c4f26d2 Binary files /dev/null and b/website/items/flower_pot.png differ diff --git a/website/items/ghast_tear.png b/website/items/ghast_tear.png new file mode 100644 index 0000000..e5c741f Binary files /dev/null and b/website/items/ghast_tear.png differ diff --git a/website/items/glowstone_dust.png b/website/items/glowstone_dust.png new file mode 100644 index 0000000..edd93a6 Binary files /dev/null and b/website/items/glowstone_dust.png differ diff --git a/website/items/gold_axe.png b/website/items/gold_axe.png new file mode 100644 index 0000000..0f47b60 Binary files /dev/null and b/website/items/gold_axe.png differ diff --git a/website/items/gold_boots.png b/website/items/gold_boots.png new file mode 100644 index 0000000..f6033d2 Binary files /dev/null and b/website/items/gold_boots.png differ diff --git a/website/items/gold_chestplate.png b/website/items/gold_chestplate.png new file mode 100644 index 0000000..e36076a Binary files /dev/null and b/website/items/gold_chestplate.png differ diff --git a/website/items/gold_helmet.png b/website/items/gold_helmet.png new file mode 100644 index 0000000..9eb89a0 Binary files /dev/null and b/website/items/gold_helmet.png differ diff --git a/website/items/gold_hoe.png b/website/items/gold_hoe.png new file mode 100644 index 0000000..1685d47 Binary files /dev/null and b/website/items/gold_hoe.png differ diff --git a/website/items/gold_horse_armor.png b/website/items/gold_horse_armor.png new file mode 100644 index 0000000..7c5c3a5 Binary files /dev/null and b/website/items/gold_horse_armor.png differ diff --git a/website/items/gold_ingot.png b/website/items/gold_ingot.png new file mode 100644 index 0000000..ea781e7 Binary files /dev/null and b/website/items/gold_ingot.png differ diff --git a/website/items/gold_leggings.png b/website/items/gold_leggings.png new file mode 100644 index 0000000..da23771 Binary files /dev/null and b/website/items/gold_leggings.png differ diff --git a/website/items/gold_nugget.png b/website/items/gold_nugget.png new file mode 100644 index 0000000..3a9a2fe Binary files /dev/null and b/website/items/gold_nugget.png differ diff --git a/website/items/gold_pickaxe.png b/website/items/gold_pickaxe.png new file mode 100644 index 0000000..ecccafe Binary files /dev/null and b/website/items/gold_pickaxe.png differ diff --git a/website/items/gold_shovel.png b/website/items/gold_shovel.png new file mode 100644 index 0000000..150cbb9 Binary files /dev/null and b/website/items/gold_shovel.png differ diff --git a/website/items/gold_sword.png b/website/items/gold_sword.png new file mode 100644 index 0000000..0ddef04 Binary files /dev/null and b/website/items/gold_sword.png differ diff --git a/website/items/gunpowder.png b/website/items/gunpowder.png new file mode 100644 index 0000000..73cadec Binary files /dev/null and b/website/items/gunpowder.png differ diff --git a/website/items/hopper.png b/website/items/hopper.png new file mode 100644 index 0000000..f8b244f Binary files /dev/null and b/website/items/hopper.png differ diff --git a/website/items/iron_axe.png b/website/items/iron_axe.png new file mode 100644 index 0000000..8bf133e Binary files /dev/null and b/website/items/iron_axe.png differ diff --git a/website/items/iron_boots.png b/website/items/iron_boots.png new file mode 100644 index 0000000..b69ca05 Binary files /dev/null and b/website/items/iron_boots.png differ diff --git a/website/items/iron_chestplate.png b/website/items/iron_chestplate.png new file mode 100644 index 0000000..e7993ce Binary files /dev/null and b/website/items/iron_chestplate.png differ diff --git a/website/items/iron_helmet.png b/website/items/iron_helmet.png new file mode 100644 index 0000000..65e64cc Binary files /dev/null and b/website/items/iron_helmet.png differ diff --git a/website/items/iron_hoe.png b/website/items/iron_hoe.png new file mode 100644 index 0000000..28d4c36 Binary files /dev/null and b/website/items/iron_hoe.png differ diff --git a/website/items/iron_horse_armor.png b/website/items/iron_horse_armor.png new file mode 100644 index 0000000..5d697d1 Binary files /dev/null and b/website/items/iron_horse_armor.png differ diff --git a/website/items/iron_ingot.png b/website/items/iron_ingot.png new file mode 100644 index 0000000..3833fa0 Binary files /dev/null and b/website/items/iron_ingot.png differ diff --git a/website/items/iron_leggings.png b/website/items/iron_leggings.png new file mode 100644 index 0000000..ad53673 Binary files /dev/null and b/website/items/iron_leggings.png differ diff --git a/website/items/iron_pickaxe.png b/website/items/iron_pickaxe.png new file mode 100644 index 0000000..d21440b Binary files /dev/null and b/website/items/iron_pickaxe.png differ diff --git a/website/items/iron_shovel.png b/website/items/iron_shovel.png new file mode 100644 index 0000000..079b236 Binary files /dev/null and b/website/items/iron_shovel.png differ diff --git a/website/items/iron_sword.png b/website/items/iron_sword.png new file mode 100644 index 0000000..4d49c5a Binary files /dev/null and b/website/items/iron_sword.png differ diff --git a/website/items/item_frame.png b/website/items/item_frame.png new file mode 100644 index 0000000..261c98a Binary files /dev/null and b/website/items/item_frame.png differ diff --git a/website/items/lead.png b/website/items/lead.png new file mode 100644 index 0000000..0ef5312 Binary files /dev/null and b/website/items/lead.png differ diff --git a/website/items/leather.png b/website/items/leather.png new file mode 100644 index 0000000..13dc199 Binary files /dev/null and b/website/items/leather.png differ diff --git a/website/items/leather_boots.png b/website/items/leather_boots.png new file mode 100644 index 0000000..61d7198 Binary files /dev/null and b/website/items/leather_boots.png differ diff --git a/website/items/leather_boots_overlay.png b/website/items/leather_boots_overlay.png new file mode 100644 index 0000000..b6896d8 Binary files /dev/null and b/website/items/leather_boots_overlay.png differ diff --git a/website/items/leather_chestplate.png b/website/items/leather_chestplate.png new file mode 100644 index 0000000..e534aef Binary files /dev/null and b/website/items/leather_chestplate.png differ diff --git a/website/items/leather_chestplate_overlay.png b/website/items/leather_chestplate_overlay.png new file mode 100644 index 0000000..125fd34 Binary files /dev/null and b/website/items/leather_chestplate_overlay.png differ diff --git a/website/items/leather_helmet.png b/website/items/leather_helmet.png new file mode 100644 index 0000000..6f64763 Binary files /dev/null and b/website/items/leather_helmet.png differ diff --git a/website/items/leather_helmet_overlay.png b/website/items/leather_helmet_overlay.png new file mode 100644 index 0000000..8040d77 Binary files /dev/null and b/website/items/leather_helmet_overlay.png differ diff --git a/website/items/leather_leggings.png b/website/items/leather_leggings.png new file mode 100644 index 0000000..c2d3f03 Binary files /dev/null and b/website/items/leather_leggings.png differ diff --git a/website/items/leather_leggings_overlay.png b/website/items/leather_leggings_overlay.png new file mode 100644 index 0000000..813ba26 Binary files /dev/null and b/website/items/leather_leggings_overlay.png differ diff --git a/website/items/magma_cream.png b/website/items/magma_cream.png new file mode 100644 index 0000000..b2be210 Binary files /dev/null and b/website/items/magma_cream.png differ diff --git a/website/items/map_empty.png b/website/items/map_empty.png new file mode 100644 index 0000000..8dc6e58 Binary files /dev/null and b/website/items/map_empty.png differ diff --git a/website/items/map_filled.png b/website/items/map_filled.png new file mode 100644 index 0000000..1381e21 Binary files /dev/null and b/website/items/map_filled.png differ diff --git a/website/items/melon.png b/website/items/melon.png new file mode 100644 index 0000000..590f47a Binary files /dev/null and b/website/items/melon.png differ diff --git a/website/items/melon_speckled.png b/website/items/melon_speckled.png new file mode 100644 index 0000000..dee1bf5 Binary files /dev/null and b/website/items/melon_speckled.png differ diff --git a/website/items/minecart_chest.png b/website/items/minecart_chest.png new file mode 100644 index 0000000..78a3778 Binary files /dev/null and b/website/items/minecart_chest.png differ diff --git a/website/items/minecart_command_block.png b/website/items/minecart_command_block.png new file mode 100644 index 0000000..c597ee7 Binary files /dev/null and b/website/items/minecart_command_block.png differ diff --git a/website/items/minecart_furnace.png b/website/items/minecart_furnace.png new file mode 100644 index 0000000..5478f25 Binary files /dev/null and b/website/items/minecart_furnace.png differ diff --git a/website/items/minecart_hopper.png b/website/items/minecart_hopper.png new file mode 100644 index 0000000..8a138fb Binary files /dev/null and b/website/items/minecart_hopper.png differ diff --git a/website/items/minecart_normal.png b/website/items/minecart_normal.png new file mode 100644 index 0000000..2046f2b Binary files /dev/null and b/website/items/minecart_normal.png differ diff --git a/website/items/minecart_tnt.png b/website/items/minecart_tnt.png new file mode 100644 index 0000000..561279b Binary files /dev/null and b/website/items/minecart_tnt.png differ diff --git a/website/items/mushroom_stew.png b/website/items/mushroom_stew.png new file mode 100644 index 0000000..5598bc7 Binary files /dev/null and b/website/items/mushroom_stew.png differ diff --git a/website/items/mutton_cooked.png b/website/items/mutton_cooked.png new file mode 100644 index 0000000..e1b62dc Binary files /dev/null and b/website/items/mutton_cooked.png differ diff --git a/website/items/mutton_raw.png b/website/items/mutton_raw.png new file mode 100644 index 0000000..1222ff4 Binary files /dev/null and b/website/items/mutton_raw.png differ diff --git a/website/items/name_tag.png b/website/items/name_tag.png new file mode 100644 index 0000000..a88f559 Binary files /dev/null and b/website/items/name_tag.png differ diff --git a/website/items/nether_star.png b/website/items/nether_star.png new file mode 100644 index 0000000..6b848af Binary files /dev/null and b/website/items/nether_star.png differ diff --git a/website/items/nether_wart.png b/website/items/nether_wart.png new file mode 100644 index 0000000..09da1e3 Binary files /dev/null and b/website/items/nether_wart.png differ diff --git a/website/items/netherbrick.png b/website/items/netherbrick.png new file mode 100644 index 0000000..e9c14ed Binary files /dev/null and b/website/items/netherbrick.png differ diff --git a/website/items/painting.png b/website/items/painting.png new file mode 100644 index 0000000..b394f30 Binary files /dev/null and b/website/items/painting.png differ diff --git a/website/items/paper.png b/website/items/paper.png new file mode 100644 index 0000000..a1d9c7e Binary files /dev/null and b/website/items/paper.png differ diff --git a/website/items/porkchop_cooked.png b/website/items/porkchop_cooked.png new file mode 100644 index 0000000..605d3f5 Binary files /dev/null and b/website/items/porkchop_cooked.png differ diff --git a/website/items/porkchop_raw.png b/website/items/porkchop_raw.png new file mode 100644 index 0000000..7e83c1a Binary files /dev/null and b/website/items/porkchop_raw.png differ diff --git a/website/items/potato.png b/website/items/potato.png new file mode 100644 index 0000000..c1d8541 Binary files /dev/null and b/website/items/potato.png differ diff --git a/website/items/potato_baked.png b/website/items/potato_baked.png new file mode 100644 index 0000000..e4d765b Binary files /dev/null and b/website/items/potato_baked.png differ diff --git a/website/items/potato_poisonous.png b/website/items/potato_poisonous.png new file mode 100644 index 0000000..6f154af Binary files /dev/null and b/website/items/potato_poisonous.png differ diff --git a/website/items/potion_bottle_drinkable.png b/website/items/potion_bottle_drinkable.png new file mode 100644 index 0000000..87339d7 Binary files /dev/null and b/website/items/potion_bottle_drinkable.png differ diff --git a/website/items/potion_bottle_empty.png b/website/items/potion_bottle_empty.png new file mode 100644 index 0000000..87339d7 Binary files /dev/null and b/website/items/potion_bottle_empty.png differ diff --git a/website/items/potion_bottle_splash.png b/website/items/potion_bottle_splash.png new file mode 100644 index 0000000..03b1f90 Binary files /dev/null and b/website/items/potion_bottle_splash.png differ diff --git a/website/items/potion_overlay.png b/website/items/potion_overlay.png new file mode 100644 index 0000000..61864e9 Binary files /dev/null and b/website/items/potion_overlay.png differ diff --git a/website/items/prismarine_crystals.png b/website/items/prismarine_crystals.png new file mode 100644 index 0000000..7cf87d5 Binary files /dev/null and b/website/items/prismarine_crystals.png differ diff --git a/website/items/prismarine_shard.png b/website/items/prismarine_shard.png new file mode 100644 index 0000000..4030b4c Binary files /dev/null and b/website/items/prismarine_shard.png differ diff --git a/website/items/pumpkin_pie.png b/website/items/pumpkin_pie.png new file mode 100644 index 0000000..c21a032 Binary files /dev/null and b/website/items/pumpkin_pie.png differ diff --git a/website/items/quartz.png b/website/items/quartz.png new file mode 100644 index 0000000..e403446 Binary files /dev/null and b/website/items/quartz.png differ diff --git a/website/items/quiver.png b/website/items/quiver.png new file mode 100644 index 0000000..818f728 Binary files /dev/null and b/website/items/quiver.png differ diff --git a/website/items/rabbit_cooked.png b/website/items/rabbit_cooked.png new file mode 100644 index 0000000..49657c3 Binary files /dev/null and b/website/items/rabbit_cooked.png differ diff --git a/website/items/rabbit_foot.png b/website/items/rabbit_foot.png new file mode 100644 index 0000000..f7d9140 Binary files /dev/null and b/website/items/rabbit_foot.png differ diff --git a/website/items/rabbit_hide.png b/website/items/rabbit_hide.png new file mode 100644 index 0000000..516b899 Binary files /dev/null and b/website/items/rabbit_hide.png differ diff --git a/website/items/rabbit_raw.png b/website/items/rabbit_raw.png new file mode 100644 index 0000000..4b54135 Binary files /dev/null and b/website/items/rabbit_raw.png differ diff --git a/website/items/rabbit_stew.png b/website/items/rabbit_stew.png new file mode 100644 index 0000000..93e83e6 Binary files /dev/null and b/website/items/rabbit_stew.png differ diff --git a/website/items/record_11.png b/website/items/record_11.png new file mode 100644 index 0000000..07ac487 Binary files /dev/null and b/website/items/record_11.png differ diff --git a/website/items/record_13.png b/website/items/record_13.png new file mode 100644 index 0000000..ead0c61 Binary files /dev/null and b/website/items/record_13.png differ diff --git a/website/items/record_blocks.png b/website/items/record_blocks.png new file mode 100644 index 0000000..3732d6c Binary files /dev/null and b/website/items/record_blocks.png differ diff --git a/website/items/record_cat.png b/website/items/record_cat.png new file mode 100644 index 0000000..b3527ef Binary files /dev/null and b/website/items/record_cat.png differ diff --git a/website/items/record_chirp.png b/website/items/record_chirp.png new file mode 100644 index 0000000..1b24e11 Binary files /dev/null and b/website/items/record_chirp.png differ diff --git a/website/items/record_far.png b/website/items/record_far.png new file mode 100644 index 0000000..2320efd Binary files /dev/null and b/website/items/record_far.png differ diff --git a/website/items/record_mall.png b/website/items/record_mall.png new file mode 100644 index 0000000..811d046 Binary files /dev/null and b/website/items/record_mall.png differ diff --git a/website/items/record_mellohi.png b/website/items/record_mellohi.png new file mode 100644 index 0000000..879b6a4 Binary files /dev/null and b/website/items/record_mellohi.png differ diff --git a/website/items/record_stal.png b/website/items/record_stal.png new file mode 100644 index 0000000..c650d21 Binary files /dev/null and b/website/items/record_stal.png differ diff --git a/website/items/record_strad.png b/website/items/record_strad.png new file mode 100644 index 0000000..72d6e32 Binary files /dev/null and b/website/items/record_strad.png differ diff --git a/website/items/record_wait.png b/website/items/record_wait.png new file mode 100644 index 0000000..5306b51 Binary files /dev/null and b/website/items/record_wait.png differ diff --git a/website/items/record_ward.png b/website/items/record_ward.png new file mode 100644 index 0000000..b33b93d Binary files /dev/null and b/website/items/record_ward.png differ diff --git a/website/items/redstone_dust.png b/website/items/redstone_dust.png new file mode 100644 index 0000000..6da938b Binary files /dev/null and b/website/items/redstone_dust.png differ diff --git a/website/items/reeds.png b/website/items/reeds.png new file mode 100644 index 0000000..40872c6 Binary files /dev/null and b/website/items/reeds.png differ diff --git a/website/items/repeater.png b/website/items/repeater.png new file mode 100644 index 0000000..7a07381 Binary files /dev/null and b/website/items/repeater.png differ diff --git a/website/items/rotten_flesh.png b/website/items/rotten_flesh.png new file mode 100644 index 0000000..3f39998 Binary files /dev/null and b/website/items/rotten_flesh.png differ diff --git a/website/items/ruby.png b/website/items/ruby.png new file mode 100644 index 0000000..4f288d9 Binary files /dev/null and b/website/items/ruby.png differ diff --git a/website/items/saddle.png b/website/items/saddle.png new file mode 100644 index 0000000..b12eafa Binary files /dev/null and b/website/items/saddle.png differ diff --git a/website/items/seeds_melon.png b/website/items/seeds_melon.png new file mode 100644 index 0000000..ef84499 Binary files /dev/null and b/website/items/seeds_melon.png differ diff --git a/website/items/seeds_pumpkin.png b/website/items/seeds_pumpkin.png new file mode 100644 index 0000000..8d8f076 Binary files /dev/null and b/website/items/seeds_pumpkin.png differ diff --git a/website/items/seeds_wheat.png b/website/items/seeds_wheat.png new file mode 100644 index 0000000..83d23a6 Binary files /dev/null and b/website/items/seeds_wheat.png differ diff --git a/website/items/shears.png b/website/items/shears.png new file mode 100644 index 0000000..f9c6de1 Binary files /dev/null and b/website/items/shears.png differ diff --git a/website/items/sign.png b/website/items/sign.png new file mode 100644 index 0000000..9b6e2ee Binary files /dev/null and b/website/items/sign.png differ diff --git a/website/items/slimeball.png b/website/items/slimeball.png new file mode 100644 index 0000000..46478ee Binary files /dev/null and b/website/items/slimeball.png differ diff --git a/website/items/snowball.png b/website/items/snowball.png new file mode 100644 index 0000000..340c639 Binary files /dev/null and b/website/items/snowball.png differ diff --git a/website/items/spawn_egg.png b/website/items/spawn_egg.png new file mode 100644 index 0000000..26cc6b2 Binary files /dev/null and b/website/items/spawn_egg.png differ diff --git a/website/items/spawn_egg_overlay.png b/website/items/spawn_egg_overlay.png new file mode 100644 index 0000000..83ec78f Binary files /dev/null and b/website/items/spawn_egg_overlay.png differ diff --git a/website/items/spider_eye.png b/website/items/spider_eye.png new file mode 100644 index 0000000..35d8584 Binary files /dev/null and b/website/items/spider_eye.png differ diff --git a/website/items/spider_eye_fermented.png b/website/items/spider_eye_fermented.png new file mode 100644 index 0000000..226ffb8 Binary files /dev/null and b/website/items/spider_eye_fermented.png differ diff --git a/website/items/stick.png b/website/items/stick.png new file mode 100644 index 0000000..6f8ce13 Binary files /dev/null and b/website/items/stick.png differ diff --git a/website/items/stone_axe.png b/website/items/stone_axe.png new file mode 100644 index 0000000..fb33584 Binary files /dev/null and b/website/items/stone_axe.png differ diff --git a/website/items/stone_hoe.png b/website/items/stone_hoe.png new file mode 100644 index 0000000..d46b272 Binary files /dev/null and b/website/items/stone_hoe.png differ diff --git a/website/items/stone_pickaxe.png b/website/items/stone_pickaxe.png new file mode 100644 index 0000000..19a8e50 Binary files /dev/null and b/website/items/stone_pickaxe.png differ diff --git a/website/items/stone_shovel.png b/website/items/stone_shovel.png new file mode 100644 index 0000000..8e1c0c2 Binary files /dev/null and b/website/items/stone_shovel.png differ diff --git a/website/items/stone_sword.png b/website/items/stone_sword.png new file mode 100644 index 0000000..5810dfd Binary files /dev/null and b/website/items/stone_sword.png differ diff --git a/website/items/string.png b/website/items/string.png new file mode 100644 index 0000000..0b04ddb Binary files /dev/null and b/website/items/string.png differ diff --git a/website/items/sugar.png b/website/items/sugar.png new file mode 100644 index 0000000..0864df9 Binary files /dev/null and b/website/items/sugar.png differ diff --git a/website/items/wheat.png b/website/items/wheat.png new file mode 100644 index 0000000..bbd2fd9 Binary files /dev/null and b/website/items/wheat.png differ diff --git a/website/items/wood_axe.png b/website/items/wood_axe.png new file mode 100644 index 0000000..3a19203 Binary files /dev/null and b/website/items/wood_axe.png differ diff --git a/website/items/wood_hoe.png b/website/items/wood_hoe.png new file mode 100644 index 0000000..de1c7a6 Binary files /dev/null and b/website/items/wood_hoe.png differ diff --git a/website/items/wood_pickaxe.png b/website/items/wood_pickaxe.png new file mode 100644 index 0000000..ebc6756 Binary files /dev/null and b/website/items/wood_pickaxe.png differ diff --git a/website/items/wood_shovel.png b/website/items/wood_shovel.png new file mode 100644 index 0000000..b057911 Binary files /dev/null and b/website/items/wood_shovel.png differ diff --git a/website/items/wood_sword.png b/website/items/wood_sword.png new file mode 100644 index 0000000..c04dc0a Binary files /dev/null and b/website/items/wood_sword.png differ diff --git a/website/items/wooden_armorstand.png b/website/items/wooden_armorstand.png new file mode 100644 index 0000000..6d27c47 Binary files /dev/null and b/website/items/wooden_armorstand.png differ diff --git a/website/main.js b/website/main.js index e2273a9..339d78f 100644 --- a/website/main.js +++ b/website/main.js @@ -349,6 +349,7 @@ let currentNumColumns = 0; // Variable to store the current number of columns function createColumns(num) { const postsContainer = document.getElementById("posts"); + if (!postsContainer) return []; postsContainer.innerHTML = ""; const columns = []; for (let i = 0; i < num; i++) { @@ -510,6 +511,8 @@ function layoutPosts(postElements) { function showLoadingIndicator() { const postsContainer = document.getElementById("posts"); + if (!postsContainer) return; + const loadingDiv = document.createElement("div"); loadingDiv.id = "loading-posts"; loadingDiv.className = "loading-posts"; @@ -624,14 +627,16 @@ async function fetchPosts() { // Show error message const postsContainer = document.getElementById("posts"); - const errorDiv = document.createElement("div"); - errorDiv.className = "loading-posts"; - errorDiv.innerHTML = ` -
- âš  Failed to load posts. Please refresh the page. -
- `; - postsContainer.appendChild(errorDiv); + if (postsContainer) { + const errorDiv = document.createElement("div"); + errorDiv.className = "loading-posts"; + errorDiv.innerHTML = ` +
+ âš  Failed to load posts. Please refresh the page. +
+ `; + postsContainer.appendChild(errorDiv); + } } } @@ -664,4 +669,6 @@ window.addEventListener("resize", () => { } }); -fetchPosts(); \ No newline at end of file +if (document.getElementById("posts")) { + fetchPosts(); +} \ No newline at end of file diff --git a/website/mining.js b/website/mining.js new file mode 100644 index 0000000..788178a --- /dev/null +++ b/website/mining.js @@ -0,0 +1,2189 @@ +document.addEventListener('DOMContentLoaded', () => { + const canvas = document.getElementById('game-canvas'); + const depthDisplay = document.getElementById('depth-counter'); + const scoreDisplay = document.getElementById('score-counter'); + + if (!canvas) return; + + // --- Configuration --- + let GRID_SIZE = 5; // 5x5 grid (Dynamic) + const VISIBLE_LAYERS = 7; // How many layers deep we render + const BLOCK_SIZE = 1; + + const SELL_PRICES = { coal: 10, iron: 20, gold: 50, diamond: 200, emerald: 500 }; + const UPGRADE_COSTS = { + speed: (level) => Math.floor(100 * Math.pow(1.5, level)), + luck: (level) => Math.floor(500 * Math.pow(2, level)), + mining_area: (level) => Math.floor(1000 * Math.pow(3, level)), // Expensive! + vein_miner: (level) => Math.floor(2000 * Math.pow(2, level)), + tnt_frequency: (level) => Math.floor(5000 * Math.pow(1.5, level)), + tnt_power: (level) => Math.floor(10000 * Math.pow(2, level)), + pickup_range: (level) => Math.floor(300 * Math.pow(1.5, level)), + grid_size: (level) => Math.floor(10000 * Math.pow(4, level)) // Very Expensive! + }; + + // --- State --- + let depth = 0; + let score = 0; + let isAnimating = false; + let cameraOffsetY = 0; + let upgrades = { speed: 0, luck: 0, mining_area: 0, vein_miner: 0, tnt_frequency: 0, tnt_power: 0, pickup_range: 0, grid_size: 0 }; + let tntTimer = 0; + const tntProjectiles = []; + + // Store blocks: blocks[layerIndex][x][z] + // layerIndex 0 is the top-most visible layer. + let layers = []; + let extraBlocks = []; // Blocks above the ground (trees, etc) + + // --- Three.js Setup --- + const scene = new THREE.Scene(); + scene.background = new THREE.Color(0x87CEEB); // Sky blue background + + // Orthographic Camera for Isometric view + const aspect = canvas.clientWidth / canvas.clientHeight; + const d = 5; + const camera = new THREE.OrthographicCamera(-d * aspect, d * aspect, d, -d, 1, 1000); + + // Isometric angle + camera.position.set(20, 14, 20); + camera.lookAt(scene.position); // Look at 0,0,0 + camera.updateProjectionMatrix(); + + const renderer = new THREE.WebGLRenderer({ canvas: canvas, alpha: false, antialias: true }); + renderer.setSize(canvas.clientWidth, canvas.clientHeight); + renderer.setPixelRatio(window.devicePixelRatio); + // renderer.outputEncoding = THREE.sRGBEncoding; // We use GammaCorrectionShader instead + renderer.shadowMap.enabled = true; + renderer.shadowMap.type = THREE.PCFShadowMap; + + // --- Post Processing (SSAO) --- + const composer = new THREE.EffectComposer(renderer); + const renderPass = new THREE.RenderPass(scene, camera); + composer.addPass(renderPass); + + const ssaoPass = new THREE.SSAOPass(scene, camera, canvas.clientWidth, canvas.clientHeight); + ssaoPass.kernelRadius = 16; + ssaoPass.minDistance = 0.001; + ssaoPass.maxDistance = 0.1; + composer.addPass(ssaoPass); + + const gammaCorrectionPass = new THREE.ShaderPass(THREE.GammaCorrectionShader); + composer.addPass(gammaCorrectionPass); + + // Lighting + const hemiLight = new THREE.HemisphereLight(0xffffff, 0x444444, 0.6); + hemiLight.position.set(0, 50, 0); + scene.add(hemiLight); + + const dirLight = new THREE.DirectionalLight(0xffffff, 1.0); + dirLight.position.set(-30, 50, 30); + dirLight.castShadow = true; + dirLight.shadow.mapSize.width = 2048; + dirLight.shadow.mapSize.height = 2048; + const dLight = 10; + dirLight.shadow.camera.left = -dLight; + dirLight.shadow.camera.right = dLight; + dirLight.shadow.camera.top = dLight; + dirLight.shadow.camera.bottom = -dLight; + scene.add(dirLight); + + // --- Textures --- + const textureLoader = new THREE.TextureLoader(); + const loadTexture = (name) => { + const tex = textureLoader.load(`blocks/${name}`); + tex.magFilter = THREE.NearestFilter; + tex.minFilter = THREE.NearestFilter; + tex.encoding = THREE.sRGBEncoding; + return tex; + }; + + const loadItemTexture = (name) => { + const tex = textureLoader.load(`items/${name}`); + tex.magFilter = THREE.NearestFilter; + tex.minFilter = THREE.NearestFilter; + tex.encoding = THREE.sRGBEncoding; + return tex; + }; + + const textures = { + stone: loadTexture('stone.png'), + dirt: loadTexture('dirt.png'), + cobblestone: loadTexture('cobblestone.png'), + coal: loadTexture('coal_ore.png'), + iron: loadTexture('iron_ore.png'), + gold: loadTexture('gold_ore.png'), + diamond: loadTexture('diamond_ore.png'), + emerald: loadTexture('emerald_ore.png'), + bedrock: loadTexture('bedrock.png'), + grass_top: loadTexture('grass_top.png'), + grass_side: loadTexture('grass_side.png'), + dirt: loadTexture('dirt.png'), + log_side: loadTexture('log_oak.png'), + log_top: loadTexture('log_oak_top.png'), + leaves: loadTexture('leaves_oak.png'), + apple: loadItemTexture('apple.png'), + stick: loadItemTexture('stick.png'), + sapling: loadTexture('sapling_oak.png'), + planks: loadTexture('planks_oak.png'), + wood_pickaxe: loadItemTexture('wood_pickaxe.png'), + stone_pickaxe: loadItemTexture('stone_pickaxe.png'), + iron_pickaxe: loadItemTexture('iron_pickaxe.png'), + gold_pickaxe: loadItemTexture('gold_pickaxe.png'), + diamond_pickaxe: loadItemTexture('diamond_pickaxe.png') + }; + + // Load destroy stages + const destroyTextures = []; + for (let i = 0; i < 10; i++) { + const tex = loadTexture(`destroy_stage_${i}.png`); + tex.magFilter = THREE.NearestFilter; + tex.minFilter = THREE.NearestFilter; + destroyTextures.push(tex); + } + + // Materials cache + const materials = {}; + const getMaterial = (type) => { + if (materials[type]) return materials[type]; + + let map = textures.stone; + if (textures[type]) map = textures[type]; + + // Special case for grass block to look nice + if (type === 'grass') { + const mat = [ + new THREE.MeshLambertMaterial({ map: textures.grass_side }), // px + new THREE.MeshLambertMaterial({ map: textures.grass_side }), // nx + new THREE.MeshLambertMaterial({ map: textures.grass_top, color: 0x79C05A }), // py (top) - Tinted green + new THREE.MeshLambertMaterial({ map: textures.dirt }), // ny (bottom) + new THREE.MeshLambertMaterial({ map: textures.grass_side }), // pz + new THREE.MeshLambertMaterial({ map: textures.grass_side }) // nz + ]; + materials[type] = mat; + return mat; + } + + if (type === 'log') { + const mat = [ + new THREE.MeshLambertMaterial({ map: textures.log_side }), // px + new THREE.MeshLambertMaterial({ map: textures.log_side }), // nx + new THREE.MeshLambertMaterial({ map: textures.log_top }), // py (top) + new THREE.MeshLambertMaterial({ map: textures.log_top }), // ny (bottom) + new THREE.MeshLambertMaterial({ map: textures.log_side }), // pz + new THREE.MeshLambertMaterial({ map: textures.log_side }) // nz + ]; + materials[type] = mat; + return mat; + } + + if (type === 'leaves') { + const mat = new THREE.MeshLambertMaterial({ map: textures.leaves, transparent: true, alphaTest: 0.5, color: 0x79C05A }); + materials[type] = mat; + return mat; + } + + if (type === 'apple') { + const mat = new THREE.MeshLambertMaterial({ map: textures.apple, transparent: true, alphaTest: 0.5, side: THREE.DoubleSide }); + materials[type] = mat; + return mat; + } + if (type === 'stick') { + const mat = new THREE.MeshLambertMaterial({ map: textures.stick, transparent: true, alphaTest: 0.5, side: THREE.DoubleSide }); + materials[type] = mat; + return mat; + } + if (type === 'sapling') { + const mat = new THREE.MeshLambertMaterial({ map: textures.sapling, transparent: true, alphaTest: 0.5, side: THREE.DoubleSide }); + materials[type] = mat; + return mat; + } + + const mat = new THREE.MeshLambertMaterial({ map: map }); + materials[type] = mat; + return mat; + }; + + // Damage Overlay + const damageMaterial = new THREE.MeshBasicMaterial({ + map: destroyTextures[0], + color: 0x808080, + transparent: true, + depthWrite: false, + polygonOffset: true, + polygonOffsetFactor: -1, + polygonOffsetUnits: -1, + blending: THREE.CustomBlending, + blendEquation: THREE.ReverseSubtractEquation, + blendSrc: THREE.SrcAlphaFactor, + blendDst: THREE.OneFactor + }); + const damageGeometry = new THREE.BoxGeometry(BLOCK_SIZE * 1.002, BLOCK_SIZE * 1.002, BLOCK_SIZE * 1.002); + const damageOverlay = new THREE.Mesh(damageGeometry, damageMaterial); + damageOverlay.visible = false; + scene.add(damageOverlay); + + // --- Game Logic --- + + // Hardness reference: Stone (1.5) takes 4 seconds (4,000 ms) + // Multiplier = 4,000 / 1.5 = 2666.66 ms per hardness unit + const HARDNESS_MULTIPLIER = 2666.66; + + const BLOCK_HEALTH = { + grass: 0.3 * HARDNESS_MULTIPLIER, + dirt: 0.2 * HARDNESS_MULTIPLIER, + stone: 1.5 * HARDNESS_MULTIPLIER, + cobblestone: 2 * HARDNESS_MULTIPLIER, + coal: 3 * HARDNESS_MULTIPLIER, + iron: 3 * HARDNESS_MULTIPLIER, + gold: 3 * HARDNESS_MULTIPLIER, + diamond: 3 * HARDNESS_MULTIPLIER, + emerald: 3 * HARDNESS_MULTIPLIER, + log: 2.0 * HARDNESS_MULTIPLIER, + leaves: 0.05 * HARDNESS_MULTIPLIER, + bedrock: Infinity + }; + + function createBlock(x, y, z, type) { + const geometry = new THREE.BoxGeometry(BLOCK_SIZE, BLOCK_SIZE, BLOCK_SIZE); + const material = getMaterial(type); + const cube = new THREE.Mesh(geometry, material); + cube.castShadow = true; + cube.receiveShadow = true; + + // Center the grid + // GRID_SIZE is dynamic now + const offset = (GRID_SIZE * BLOCK_SIZE) / 2 - (BLOCK_SIZE / 2); + + cube.position.set( + x * BLOCK_SIZE - offset, + y * BLOCK_SIZE, // Y is vertical + z * BLOCK_SIZE - offset + ); + + cube.userData = { gridX: x, gridY: y, gridZ: z, type: type }; + scene.add(cube); + return cube; + } + + function getBlockTypeForDepth(d) { + // Helper to reuse generation logic + if (d === 0) return 'grass'; + if (d === 1) return 'dirt'; + if (d === 2) return 'dirt'; + + // Bedrock at bottom? No, infinite mining. + + const rand = Math.random(); + + // Ore probabilities based on depth + let coalProb = 0.05; + let ironProb = 0.0; + let goldProb = 0.0; + let diamondProb = 0.0; + let emeraldProb = 0.0; + + if (d > 5) ironProb = 0.03; + if (d > 10) goldProb = 0.02; + if (d > 20) diamondProb = 0.01; + if (d > 50) emeraldProb = 0.005; + + // Increase probs as we go deeper + if (d > 30) { + coalProb = 0.08; + ironProb = 0.05; + } + if (d > 60) { + goldProb = 0.04; + diamondProb = 0.02; + } + + if (rand < emeraldProb) return 'emerald'; + if (rand < emeraldProb + diamondProb) return 'diamond'; + if (rand < emeraldProb + diamondProb + goldProb) return 'gold'; + if (rand < emeraldProb + diamondProb + goldProb + ironProb) return 'iron'; + if (rand < emeraldProb + diamondProb + goldProb + ironProb + coalProb) return 'coal'; + + if (d < 5) return 'dirt'; + if (d < 10 && Math.random() < 0.5) return 'dirt'; + + return Math.random() < 0.8 ? 'stone' : 'cobblestone'; + } + + function generateLayer(layerIndex, absoluteDepth) { + const layer = []; + for (let x = 0; x < GRID_SIZE; x++) { + layer[x] = []; + for (let z = 0; z < GRID_SIZE; z++) { + // layerIndex corresponds to Y position. + // 0 is top, -1 is below, etc. + const type = getBlockTypeForDepth(absoluteDepth); + const block = createBlock(x, -layerIndex, z, type); + layer[x][z] = block; + } + } + return layer; + } + + const STRUCTURES = { + tree: [] + }; + + // Init Tree Structure + (() => { + const s = STRUCTURES.tree; + for(let y=0; y<3; y++) s.push({x:0, y:y, z:0, type:'log'}); + for(let x=-2; x<=2; x++) { + for(let y=2; y<=3; y++) { + for(let z=-2; z<=2; z++) { + if(Math.abs(x)===2 && Math.abs(z)===2) continue; + if(x===0 && z===0 && y===2) continue; + s.push({x, y, z, type:'leaves'}); + } + } + } + for(let x=-1; x<=1; x++) { + for(let z=-1; z<=1; z++) { + if(x===0 && z===0) continue; + s.push({x, y:4, z, type:'leaves'}); + } + } + s.push({x:0, y:5, z:0, type:'leaves'}); + })(); + + function placeStructure(gx, gy, gz, structureName) { + const structure = STRUCTURES[structureName]; + if (!structure) return; + + structure.forEach(block => { + spawnBlock(gx + block.x, gy + block.y, gz + block.z, block.type); + }); + } + + function generateTree() { + const cx = Math.floor(GRID_SIZE / 2); + const cz = Math.floor(GRID_SIZE / 2); + placeStructure(cx, 1, cz, 'tree'); + } + + function saveGame() { + const saveData = { + depth, + score, + inventory, + upgrades, + layers: layers.map(layer => layer.map(row => row.map(block => block ? block.userData.type : null))), + extraBlocks: extraBlocks.map(b => ({ + type: b.userData.type, + gridX: b.userData.gridX, + gridZ: b.userData.gridZ, + y: Math.round(b.position.y / BLOCK_SIZE), + isSapling: b.userData.isSapling, + growthTimer: b.userData.growthTimer + })), + drops: drops.map(d => ({ + type: d.userData.type, + count: d.userData.count || 1, + x: d.position.x, + y: d.position.y, + z: d.position.z, + vx: d.userData.velocity.x, + vy: d.userData.velocity.y, + vz: d.userData.velocity.z, + life: d.userData.life, + autoCollect: d.userData.autoCollect + })) + }; + localStorage.setItem('miningGameSave', JSON.stringify(saveData)); + } + + function loadGame() { + const dataStr = localStorage.getItem('miningGameSave'); + if (!dataStr) return false; + + try { + const data = JSON.parse(dataStr); + depth = data.depth; + score = data.score; + inventory = Object.assign({}, data.inventory); + if (data.upgrades) { + upgrades = Object.assign(upgrades, data.upgrades); + // Ensure new upgrades are initialized if loading old save + if (upgrades.mining_area === undefined) upgrades.mining_area = 0; + if (upgrades.vein_miner === undefined) upgrades.vein_miner = 0; + if (upgrades.tnt_frequency === undefined) upgrades.tnt_frequency = 0; + if (upgrades.tnt_power === undefined) upgrades.tnt_power = 0; + if (upgrades.pickup_range === undefined) upgrades.pickup_range = 0; + if (upgrades.grid_size === undefined) upgrades.grid_size = 0; + + // Update GRID_SIZE based on loaded upgrade + GRID_SIZE = 5 + (upgrades.grid_size * 2); + + // Adjust camera for larger grids + if (upgrades.grid_size > 0) { + const d = 5 + upgrades.grid_size; + camera.left = -d * aspect; + camera.right = d * aspect; + camera.top = d; + camera.bottom = -d; + camera.updateProjectionMatrix(); + } + } + + depthDisplay.innerText = depth; + scoreDisplay.innerText = score; + updateInventoryUI(); + + // Rebuild layers + layers = []; + data.layers.forEach((savedLayer, layerIdx) => { + const layer = []; + // Handle grid size mismatch if save is old + const savedSize = savedLayer.length; + const offsetDiff = (GRID_SIZE - savedSize) / 2; + + for(let x=0; x= 0 && oldX < savedSize && oldZ >= 0 && oldZ < savedSize) { + if (savedLayer[oldX] && savedLayer[oldX][oldZ]) { + type = savedLayer[oldX][oldZ]; + } + } else { + // New outer block for expanded grid + // Only if we are expanding. If shrinking (not possible yet), we just clip. + // But wait, if we load an old save with smaller grid, we should probably fill the new space? + // Or just leave it empty? + // If we leave it empty, checkLayerCleared might trigger. + // So we should probably generate blocks for the new area. + if (GRID_SIZE > savedSize) { + type = getBlockTypeForDepth(depth + layerIdx); + } + } + + if (type) { + const block = createBlock(x, -layerIdx, z, type); + layer[x][z] = block; + scene.add(block); // Ensure we add to scene! + } else { + layer[x][z] = null; + } + } + } + layers.push(layer); + }); + + // Rebuild extraBlocks + extraBlocks = []; + data.extraBlocks.forEach(bData => { + if (bData.isSapling) { + spawnSapling(bData.gridX, bData.y, bData.gridZ, bData.growthTimer); + } else { + spawnBlock(bData.gridX, bData.y, bData.gridZ, bData.type); + } + }); + + // Rebuild drops + if (data.drops) { + data.drops.forEach(dData => { + const pos = new THREE.Vector3(dData.x, dData.y, dData.z); + spawnDrop(pos, dData.type, dData.autoCollect); + // The last added drop is at drops[drops.length-1] + const drop = drops[drops.length-1]; + if (drop) { + drop.userData.velocity.set(dData.vx, dData.vy, dData.vz); + drop.userData.life = dData.life || 0; + drop.userData.physicsPos.copy(pos); + drop.userData.count = dData.count || 1; + + // Apply scale based on count + const count = drop.userData.count; + const newScale = Math.min(2.0, 0.6 + (count * 0.1)); + if (drop.userData.isExtruded) { + drop.scale.set(newScale, newScale, newScale); + } else { + const blockScale = Math.min(1.5, 1.0 + (count * 0.1)); + drop.scale.set(blockScale, blockScale, blockScale); + } + } + }); + } + + return true; + } catch (e) { + console.error("Failed to load save", e); + return false; + } + } + + function initGame() { + if (loadGame()) { + console.log("Game loaded from save."); + } else { + // Generate initial layers + for (let i = 0; i < VISIBLE_LAYERS; i++) { + layers.push(generateLayer(i, depth + i)); + } + generateTree(); + } + + // Set initial camera position for tree + if (extraBlocks.length > 0) { + cameraOffsetY = 3.5; + camera.position.set(20, 14 + cameraOffsetY, 20); + camera.lookAt(0, cameraOffsetY, 0); + } + + // Auto-save + setInterval(saveGame, 5000); + } + + function checkLayerCleared() { + // Check the top layer (index 0) + const topLayer = layers[0]; + let isEmpty = true; + + for (let x = 0; x < GRID_SIZE; x++) { + for (let z = 0; z < GRID_SIZE; z++) { + if (topLayer[x][z] !== null) { + isEmpty = false; + break; + } + } + if (!isEmpty) break; + } + + if (isEmpty) { + advanceLevel(); + } + } + + function advanceLevel() { + if (isAnimating) return; + isAnimating = true; + + // Remove empty top layer from array + layers.shift(); + + // Increment depth + depth++; + depthDisplay.innerText = depth; + + // Generate new layer at the bottom + const newLayerDepth = depth + VISIBLE_LAYERS - 1; + + // Create it one step lower (VISIBLE_LAYERS instead of VISIBLE_LAYERS - 1) + // so it can animate up into place + const newLayer = generateLayer(VISIBLE_LAYERS, newLayerDepth); + + layers.push(newLayer); + + // Animate all blocks moving up + const duration = 500; // ms + const start = Date.now(); + + const startPositions = []; + const allBlocks = []; + + layers.forEach(layer => { + layer.forEach(row => { + row.forEach(block => { + if (block) { + allBlocks.push(block); + startPositions.push(block.position.y); + } + }); + }); + }); + + extraBlocks.forEach(block => { + allBlocks.push(block); + startPositions.push(block.position.y); + }); + + // Also animate drops + const dropStartPositions = []; + drops.forEach(drop => { + dropStartPositions.push(drop.userData.physicsPos.y); + }); + + function animate() { + const now = Date.now(); + const progress = Math.min((now - start) / duration, 1); + const ease = 1 - Math.pow(1 - progress, 3); // Cubic ease out + const offset = ease * BLOCK_SIZE; + + allBlocks.forEach((b, i) => { + b.position.y = startPositions[i] + offset; + }); + + drops.forEach((drop, i) => { + drop.userData.physicsPos.y = dropStartPositions[i] + offset; + drop.position.y = drop.userData.physicsPos.y; // Visual update handled in updateDrops but we force it here for smoothness + }); + + if (progress < 1) { + requestAnimationFrame(animate); + } else { + isAnimating = false; + // Correct positions exactly to avoid float drift + layers.forEach((layer, layerIdx) => { + layer.forEach(row => { + row.forEach(block => { + if (block) { + // The top layer (index 0) should now be at Y=0 + block.position.y = -layerIdx * BLOCK_SIZE; + } + }); + }); + }); + // Extra blocks just stay where they ended up (shifted up by 1) + + // Finalize drop positions + drops.forEach((drop, i) => { + drop.userData.physicsPos.y = dropStartPositions[i] + BLOCK_SIZE; + }); + + saveGame(); + checkLayerCleared(); // Check if the next layer is also empty + } + } + + animate(); + } + + // --- Inventory --- + let inventory = {}; + let selectedItem = null; + const inventoryDisplay = document.getElementById('inventory-display'); + + function isPlaceable(type) { + const placeables = ['log', 'planks', 'cobblestone', 'dirt', 'stone', 'leaves', 'sapling', 'grass']; + return placeables.includes(type); + } + + function addToInventory(type) { + if (!inventory[type]) inventory[type] = 0; + inventory[type]++; + updateInventoryUI(); + } + + function updateInventoryUI() { + if (!inventoryDisplay) return; + inventoryDisplay.innerHTML = ''; + for (const [type, count] of Object.entries(inventory)) { + if (count <= 0) continue; // Skip items with 0 count + + const slot = document.createElement('div'); + slot.className = 'inventory-slot'; + slot.dataset.type = type; // For animation targeting + + if (selectedItem === type) { + slot.style.borderColor = '#ffff00'; + slot.style.borderWidth = '3px'; + slot.style.transform = 'scale(1.1)'; + } + + slot.onclick = () => { + if (selectedItem === type) { + selectedItem = null; + } else { + if (isPlaceable(type)) { + selectedItem = type; + } + } + updateInventoryUI(); + }; + + const img = document.createElement('img'); + let iconName = type; + if (type === 'coal') iconName = 'coal_ore'; + if (type === 'iron') iconName = 'iron_ore'; + if (type === 'gold') iconName = 'gold_ore'; + if (type === 'diamond') iconName = 'diamond_ore'; + if (type === 'emerald') iconName = 'emerald_ore'; + if (type === 'log') iconName = 'log_oak'; + if (type === 'leaves') iconName = 'leaves_oak'; + if (type === 'grass') iconName = 'grass_side'; + if (type === 'stick') iconName = 'stick'; + if (type === 'sapling') iconName = 'sapling_oak'; + if (type === 'apple') iconName = 'apple'; + if (type === 'planks') iconName = 'planks_oak'; + if (type === 'wood_pickaxe') iconName = 'wood_pickaxe'; + if (type === 'stone_pickaxe') iconName = 'stone_pickaxe'; + if (type === 'iron_pickaxe') iconName = 'iron_pickaxe'; + if (type === 'gold_pickaxe') iconName = 'gold_pickaxe'; + if (type === 'diamond_pickaxe') iconName = 'diamond_pickaxe'; + + if (['apple', 'stick', 'wood_pickaxe', 'stone_pickaxe', 'iron_pickaxe', 'gold_pickaxe', 'diamond_pickaxe'].includes(type)) { + img.src = `items/${iconName}.png`; + } else { + img.src = `blocks/${iconName}.png`; + } + + // Special handling for non-block items to tint them? + if (type === 'stick') { + img.style.transform = 'scale(0.8)'; + } + if (type === 'sapling') { + img.style.transform = 'scale(0.8)'; + } + + const countDiv = document.createElement('div'); + countDiv.className = 'inventory-count'; + countDiv.innerText = count; + + slot.appendChild(img); + slot.appendChild(countDiv); + inventoryDisplay.appendChild(slot); + } + updateCraftingUI(); + } + + // --- Crafting --- + const craftingDisplay = document.getElementById('crafting-display'); + const RECIPES = [ + { + output: 'planks', + count: 4, + inputs: { 'log': 1 } + }, + { + output: 'stick', + count: 4, + inputs: { 'planks': 2 } + }, + { + output: 'wood_pickaxe', + count: 1, + inputs: { 'planks': 3, 'stick': 2 } + }, + { + output: 'stone_pickaxe', + count: 1, + inputs: { 'cobblestone': 3, 'stick': 2 } + }, + { + output: 'iron_pickaxe', + count: 1, + inputs: { 'iron': 3, 'stick': 2 } + }, + { + output: 'gold_pickaxe', + count: 1, + inputs: { 'gold': 3, 'stick': 2 } + }, + { + output: 'diamond_pickaxe', + count: 1, + inputs: { 'diamond': 3, 'stick': 2 } + } + ]; + + function canCraft(recipe) { + for (const [item, count] of Object.entries(recipe.inputs)) { + if (!inventory[item] || inventory[item] < count) return false; + } + return true; + } + + function craft(recipe) { + if (!canCraft(recipe)) return; + + // Deduct inputs + for (const [item, count] of Object.entries(recipe.inputs)) { + inventory[item] -= count; + if (inventory[item] <= 0) delete inventory[item]; + } + + // Add output + if (!inventory[recipe.output]) inventory[recipe.output] = 0; + inventory[recipe.output] += recipe.count; + + updateInventoryUI(); + // updateCraftingUI called by updateInventoryUI + } + + function updateCraftingUI() { + if (!craftingDisplay) return; + craftingDisplay.innerHTML = ''; + + RECIPES.forEach(recipe => { + const slot = document.createElement('div'); + slot.className = 'crafting-slot'; + if (canCraft(recipe)) { + slot.classList.add('can-craft'); + slot.onclick = () => craft(recipe); + } else { + slot.style.opacity = '0.5'; + slot.style.cursor = 'default'; + } + + const img = document.createElement('img'); + let iconName = recipe.output; + if (iconName === 'planks') iconName = 'planks_oak'; + + if (['wood_pickaxe', 'stone_pickaxe', 'iron_pickaxe', 'gold_pickaxe', 'diamond_pickaxe', 'stick'].includes(recipe.output)) { + img.src = `items/${iconName}.png`; + } else { + img.src = `blocks/${iconName}.png`; + } + + // Tooltip + const tooltip = document.createElement('div'); + tooltip.className = 'crafting-tooltip'; + let costText = []; + for (const [item, count] of Object.entries(recipe.inputs)) { + costText.push(`${count} ${item}`); + } + tooltip.innerText = `${recipe.output} (${costText.join(', ')})`; + + slot.appendChild(img); + slot.appendChild(tooltip); + craftingDisplay.appendChild(slot); + }); + } + + // --- Drops --- + const drops = []; + const dropGeometry = new THREE.BoxGeometry(0.25, 0.25, 0.25); + + // Shadow Texture + const shadowCanvas = document.createElement('canvas'); + shadowCanvas.width = 64; + shadowCanvas.height = 64; + const shadowCtx = shadowCanvas.getContext('2d'); + const shadowGradient = shadowCtx.createRadialGradient(32, 32, 0, 32, 32, 32); + shadowGradient.addColorStop(0, 'rgba(0, 0, 0, 0.5)'); + shadowGradient.addColorStop(1, 'rgba(0, 0, 0, 0)'); + shadowCtx.fillStyle = shadowGradient; + shadowCtx.fillRect(0, 0, 64, 64); + const shadowTexture = new THREE.CanvasTexture(shadowCanvas); + const shadowMaterial = new THREE.MeshBasicMaterial({ map: shadowTexture, transparent: true, depthWrite: false }); + const shadowGeometry = new THREE.PlaneGeometry(0.4, 0.4); + + function spawnDrop(position, type, autoCollect = false) { + // Check for existing drops to clump with + for (const existingDrop of drops) { + if (existingDrop.userData.type === type && !existingDrop.userData.collecting) { + const dist = existingDrop.userData.physicsPos.distanceTo(position); + if (dist < 1.0) { // Within 1 block radius + existingDrop.userData.count = (existingDrop.userData.count || 1) + 1; + + // Visual feedback for clumping (scale up slightly, max 2x) + const newScale = Math.min(2.0, 0.6 + (existingDrop.userData.count * 0.1)); + if (existingDrop.userData.isExtruded) { + existingDrop.scale.set(newScale, newScale, newScale); + } else { + // Standard blocks start at 1.0 + const blockScale = Math.min(1.5, 1.0 + (existingDrop.userData.count * 0.1)); + existingDrop.scale.set(blockScale, blockScale, blockScale); + } + + // Reset life to keep it around longer + existingDrop.userData.life = 0; + return; // Merged, don't spawn new + } + } + } + + const material = getMaterial(type); + + // Adjust geometry based on type + let geometry = dropGeometry; + let isExtruded = false; + + if (type === 'apple' || type === 'stick' || type === 'sapling') { + if (geometryCache[type]) { + geometry = geometryCache[type]; + isExtruded = true; + } else { + // Try to generate + const tex = textures[type]; + if (tex && tex.image && tex.image.complete && tex.image.width > 0) { + geometry = generateExtrudedGeometry(tex.image); + geometryCache[type] = geometry; + isExtruded = true; + } else if (tex && tex.image) { + // Load later + tex.image.onload = () => { + const geo = generateExtrudedGeometry(tex.image); + geometryCache[type] = geo; + // Update existing drops of this type? + // For simplicity, just next drops will be correct. + // Or we can update this drop: + if (drop.parent) { // If still in scene + drop.geometry = geo; + } + }; + } + } + } + + const drop = new THREE.Mesh(geometry, material); + + drop.castShadow = false; + drop.receiveShadow = false; + + // Physics state + drop.userData.physicsPos = position.clone(); + drop.userData.velocity = new THREE.Vector3( + (Math.random() - 0.5) * 0.025, // Slower spread + 0.025 + Math.random() * 0.025, // Lower pop + (Math.random() - 0.5) * 0.025 + ); + drop.userData.life = 0; + drop.userData.bobOffset = Math.random() * Math.PI * 2; // Random start phase + drop.userData.type = type; + drop.userData.count = 1; // Start with 1 item + drop.userData.autoCollect = autoCollect; + drop.userData.autoCollectTimer = 0; + drop.userData.isExtruded = isExtruded; + + if (isExtruded) { + drop.scale.set(0.6, 0.6, 0.6); + drop.userData.radius = 0.15; // 0.25 * 0.6 + } else { + drop.userData.radius = 0.125; + } + + // Shadow + const shadow = new THREE.Mesh(shadowGeometry, shadowMaterial); + shadow.rotation.x = -Math.PI / 2; + shadow.position.copy(position); + shadow.position.y = -100; // Hide initially + + drop.userData.shadow = shadow; + + scene.add(drop); + scene.add(shadow); + drops.push(drop); + } + + function updateDrops() { + for (let i = drops.length - 1; i >= 0; i--) { + const drop = drops[i]; + + // Collecting animation + if (drop.userData.collecting) { + // Calculate screen position + const vector = drop.position.clone(); + vector.project(camera); + + const canvas = renderer.domElement; + const rect = canvas.getBoundingClientRect(); + const scrollX = window.scrollX || window.pageXOffset; + const scrollY = window.scrollY || window.pageYOffset; + + const x = (vector.x + 1) / 2 * rect.width + rect.left + scrollX; + const y = -(vector.y - 1) / 2 * rect.height + rect.top + scrollY; + + // Create 2D floating item + createFloatingItem(drop.userData.type, x - 16, y - 16, drop.userData.count || 1); + + // Remove 3D drop immediately + scene.remove(drop); + scene.remove(drop.userData.shadow); + drops.splice(i, 1); + continue; + } + + const vel = drop.userData.velocity; + const pos = drop.userData.physicsPos; + + // Gravity (Slower) + vel.y -= 0.002; + + // Move Physics Position + pos.add(vel); + + // Floor Collision Logic (using pos) + const gx = Math.round(pos.x / BLOCK_SIZE + (GRID_SIZE/2 - 0.5)); + const gz = Math.round(pos.z / BLOCK_SIZE + (GRID_SIZE/2 - 0.5)); + + let floorY = -Infinity; + + // Check layers + for (let l = 0; l < layers.length; l++) { + if (gx >= 0 && gx < GRID_SIZE && gz >= 0 && gz < GRID_SIZE) { + const block = layers[l][gx][gz]; + if (block) { + const by = block.position.y; + if (by < pos.y && by > floorY) { + floorY = by; + } + } + } + } + // Check extra blocks + extraBlocks.forEach(b => { + if (Math.round(b.position.x / BLOCK_SIZE + (GRID_SIZE/2 - 0.5)) === gx && + Math.round(b.position.z / BLOCK_SIZE + (GRID_SIZE/2 - 0.5)) === gz) { + if (b.position.y < pos.y && b.position.y > floorY) { + floorY = b.position.y; + } + } + }); + + // Collision check + // Top of block is floorY + 0.5 + // Bottom of drop is pos.y - radius + const radius = drop.userData.radius || 0.125; + const bobAmplitude = 0.05; + if (floorY !== -Infinity) { + // Ensure we sit high enough so the bob doesn't clip + if (pos.y - radius - bobAmplitude < floorY + 0.5) { + pos.y = floorY + 0.5 + radius + bobAmplitude; + vel.y = 0; // No bounce + vel.x *= 0.7; // Friction + vel.z *= 0.7; + } + } else { + if (pos.y < -10) { + scene.remove(drop); + scene.remove(drop.userData.shadow); + drops.splice(i, 1); + continue; + } + } + + // Wall Collision + const limit = (GRID_SIZE * BLOCK_SIZE) / 2 - 0.2; + if (pos.x > limit) { pos.x = limit; vel.x *= -0.5; } + if (pos.x < -limit) { pos.x = -limit; vel.x *= -0.5; } + if (pos.z > limit) { pos.z = limit; vel.z *= -0.5; } + if (pos.z < -limit) { pos.z = -limit; vel.z *= -0.5; } + + // Update Visuals + drop.userData.life++; + + // Rotation (Yaw) + drop.rotation.y += 0.01; // Slow rotation + + // Bobbing + const bob = Math.sin(drop.userData.life * 0.02 + drop.userData.bobOffset) * 0.05; + + drop.position.copy(pos); + drop.position.y += bob; + + // Shadow Update + const shadow = drop.userData.shadow; + if (floorY !== -Infinity) { + shadow.position.set(pos.x, floorY + 0.5 + 0.01, pos.z); + shadow.visible = true; + } else { + shadow.visible = false; + } + + // Despawn logic + // Removed auto-despawn. Items stay until collected. + if (pos.y < -10) { + scene.remove(drop); + scene.remove(shadow); + drops.splice(i, 1); + } + } + } + + // --- Interaction --- + const raycaster = new THREE.Raycaster(); + const mouse = new THREE.Vector2(); + + let isMining = false; + let miningBlock = null; + let miningStartTime = 0; + let miningDuration = 0; + + function updateMouse(event) { + const rect = canvas.getBoundingClientRect(); + const clientX = event.clientX || (event.touches && event.touches[0].clientX); + const clientY = event.clientY || (event.touches && event.touches[0].clientY); + + if (clientX === undefined || clientY === undefined) return; + + mouse.x = ((clientX - rect.left) / rect.width) * 2 - 1; + mouse.y = -((clientY - rect.top) / rect.height) * 2 + 1; + } + + function getIntersection() { + raycaster.setFromCamera(mouse, camera); + + const meshes = []; + layers.forEach(layer => { + layer.forEach(row => { + row.forEach(block => { + if (block) meshes.push(block); + }); + }); + }); + extraBlocks.forEach(block => meshes.push(block)); + + const intersects = raycaster.intersectObjects(meshes); + if (intersects.length > 0) { + return intersects[0]; + } + return null; + } + + function getBlockUnderMouse() { + const intersect = getIntersection(); + return intersect ? intersect.object : null; + } + + function checkCollection() { + // Base radius in NDC (screen space -1 to 1) + // 0.15 is roughly 7.5% of screen width/height + let pickupRadius = 0.15 + (upgrades.pickup_range * 0.05); + + drops.forEach(drop => { + if (drop.userData.collecting) return; + + const vector = drop.position.clone(); + vector.project(camera); // vector is now in NDC + + // Check if in front of camera + if (vector.z > 1) return; + + const dx = vector.x - mouse.x; + const dy = vector.y - mouse.y; + const dist = Math.sqrt(dx*dx + dy*dy); + + if (dist < pickupRadius) { + drop.userData.collecting = true; + if (drop.userData.shadow) drop.userData.shadow.visible = false; + } + }); + } + + function getBlockAt(x, y, z) { + // Check layers + if (y <= 0) { + const layerIdx = -y; + if (layerIdx < layers.length) { + if (x >= 0 && x < GRID_SIZE && z >= 0 && z < GRID_SIZE) { + return layers[layerIdx][x][z]; + } + } + } + // Check extra blocks + return extraBlocks.find(b => + b.userData.gridX === x && + Math.round(b.position.y / BLOCK_SIZE) === y && + b.userData.gridZ === z + ); + } + + function getMiningSpeedMultiplier() { + let multiplier = 1; + if (inventory['wood_pickaxe']) multiplier = 2; + if (inventory['stone_pickaxe']) multiplier = 4; + if (inventory['iron_pickaxe']) multiplier = 6; + if (inventory['gold_pickaxe']) multiplier = 12; + if (inventory['diamond_pickaxe']) multiplier = 8; + + // Apply speed upgrade + multiplier *= (1 + (upgrades.speed * 0.2)); + + return multiplier; + } + + function startMining(block) { + if (miningBlock === block) return; // Already mining this block + + cancelMining(); // Stop mining previous block + + if (!block) return; + + // Check if block is mineable (exposed) + const gx = block.userData.gridX; + const gz = block.userData.gridZ; + const gy = Math.round(block.position.y / BLOCK_SIZE); + + // Check if there is a block above + const blockAbove = getBlockAt(gx, gy + 1, gz); + if (blockAbove) return; + + miningBlock = block; + miningStartTime = performance.now(); + const type = block.userData.type; + + let baseDuration = BLOCK_HEALTH[type] || 1000; + miningDuration = baseDuration / getMiningSpeedMultiplier(); + + damageOverlay.position.copy(block.position); + damageOverlay.visible = true; + damageOverlay.material.map = destroyTextures[0]; + } + + function cancelMining() { + miningBlock = null; + damageOverlay.visible = false; + } + + function processMining() { + if (!isMining || !miningBlock) return; + + const elapsed = performance.now() - miningStartTime; + const progress = elapsed / miningDuration; + + if (progress >= 1) { + breakBlock(miningBlock); + cancelMining(); + + // Continuous mining: check if mouse is still down and over a block + if (isMining) { + const nextBlock = getBlockUnderMouse(); + if (nextBlock) { + startMining(nextBlock); + } + } + } else { + const stage = Math.floor(progress * 10); + if (stage >= 0 && stage < 10) { + damageOverlay.material.map = destroyTextures[stage]; + } + } + } + + function breakBlock(block, isChainReaction = false) { + if (!block) return; + + const gx = block.userData.gridX; + const gz = block.userData.gridZ; + const type = block.userData.type; + const loot = getLoot(type); + + // Handle drops + loot.forEach(itemType => { + spawnDrop(block.position, itemType, false); + }); + + // Check if it's in extra blocks + const extraIdx = extraBlocks.indexOf(block); + if (extraIdx !== -1) { + scene.remove(block); + extraBlocks.splice(extraIdx, 1); + + // Score + let points = 1; + if (type === 'log') points = 5; + if (type === 'leaves') points = 1; + score += points; + scoreDisplay.innerText = score; + return; + } + + // Find layer index + let foundLayerIdx = -1; + for(let l=0; l 0 && ['coal', 'iron', 'gold', 'diamond', 'emerald'].includes(type)) { + const maxVein = 2 + upgrades.vein_miner * 2; + mineVein(gx, foundLayerIdx, gz, type, maxVein); + } + + // Area Mining (only for non-ores usually, but let's do it for stone/dirt/grass) + if (upgrades.mining_area > 0 && ['stone', 'dirt', 'grass', 'cobblestone'].includes(type)) { + const radius = upgrades.mining_area; // 1 = 3x3, 2 = 5x5 + mineArea(gx, foundLayerIdx, gz, radius); + } + + // Check for layer clear AFTER all chain reactions are done + // We check layer 0 specifically because that's the one that triggers advancement + checkLayerCleared(); + } + } + } + + function mineVein(gx, layerIdx, gz, type, maxBlocks) { + let minedCount = 0; + const queue = [{x: gx, z: gz, l: layerIdx}]; + const visited = new Set(); + visited.add(`${gx},${layerIdx},${gz}`); + + while (queue.length > 0 && minedCount < maxBlocks) { + const current = queue.shift(); + + // Check neighbors (up, down, left, right, forward, back) + const neighbors = [ + {x: current.x+1, z: current.z, l: current.l}, + {x: current.x-1, z: current.z, l: current.l}, + {x: current.x, z: current.z+1, l: current.l}, + {x: current.x, z: current.z-1, l: current.l}, + // Same layer only for now to keep it simple, or maybe check adjacent layers? + // Let's stick to same layer for simplicity first, or +/- 1 layer + ]; + + for (const n of neighbors) { + if (n.x < 0 || n.x >= GRID_SIZE || n.z < 0 || n.z >= GRID_SIZE) continue; + + const key = `${n.x},${n.l},${n.z}`; + if (visited.has(key)) continue; + + const block = layers[n.l][n.x][n.z]; + if (block && block.userData.type === type) { + visited.add(key); + queue.push(n); + breakBlock(block, true); // Chain reaction + minedCount++; + if (minedCount >= maxBlocks) break; + } + } + } + } + + function mineArea(gx, layerIdx, gz, radius) { + for (let x = gx - radius; x <= gx + radius; x++) { + for (let z = gz - radius; z <= gz + radius; z++) { + if (x === gx && z === gz) continue; // Already mined + if (x < 0 || x >= GRID_SIZE || z < 0 || z >= GRID_SIZE) continue; + + const block = layers[layerIdx][x][z]; + if (block) { + // Only mine common blocks with area miner + if (['stone', 'dirt', 'grass', 'cobblestone'].includes(block.userData.type)) { + breakBlock(block, true); + } + } + } + } + } + + function spawnSapling(gx, gy, gz, growthTimer = 0) { + const type = 'sapling'; + const geometry = new THREE.PlaneGeometry(0.7, 0.7); + const mat = new THREE.MeshLambertMaterial({ + map: textures.sapling, + transparent: true, + side: THREE.DoubleSide, + alphaTest: 0.5 + }); + + const plane1 = new THREE.Mesh(geometry, mat); + plane1.rotation.y = Math.PI / 4; + + const plane2 = new THREE.Mesh(geometry, mat); + plane2.rotation.y = -Math.PI / 4; + + const saplingGroup = new THREE.Group(); + saplingGroup.add(plane1); + saplingGroup.add(plane2); + + saplingGroup.position.set( + (gx - (GRID_SIZE/2 - 0.5)) * BLOCK_SIZE, + gy * BLOCK_SIZE, // Center of block + (gz - (GRID_SIZE/2 - 0.5)) * BLOCK_SIZE + ); + + // Adjust height. 0.7 height. Center is at 0. + // We want bottom at -0.5 relative to block center. + // So center should be at -0.5 + 0.35 = -0.15 + plane1.position.y = -0.15; + plane2.position.y = -0.15; + + saplingGroup.userData = { + type: type, + gridX: gx, + gridZ: gz, + isSapling: true, + growthTimer: growthTimer, + maxGrowthTime: 600 // 10 seconds at 60fps + }; + + // Progress Bar + const barBg = new THREE.Mesh( + new THREE.PlaneGeometry(0.8, 0.1), + new THREE.MeshBasicMaterial({ color: 0x000000 }) + ); + barBg.position.set(0, 0.5, 0); + // Billboard + barBg.userData.isBillboard = true; + + const barFg = new THREE.Mesh( + new THREE.PlaneGeometry(0.78, 0.08), + new THREE.MeshBasicMaterial({ color: 0x00ff00 }) + ); + barFg.position.z = 0.01; + barFg.scale.x = 0; + + barBg.add(barFg); + saplingGroup.add(barBg); + saplingGroup.userData.progressBar = barFg; + saplingGroup.userData.progressBarBg = barBg; + + scene.add(saplingGroup); + extraBlocks.push(saplingGroup); + } + + function placeBlock(gx, gy, gz, type) { + // Deduct from inventory + inventory[type]--; + if (inventory[type] <= 0) { + delete inventory[type]; + selectedItem = null; + } + updateInventoryUI(); + + // Create Mesh + if (type === 'sapling') { + spawnSapling(gx, gy, gz); + return; + } + + let geometry = new THREE.BoxGeometry(BLOCK_SIZE, BLOCK_SIZE, BLOCK_SIZE); + let material = getMaterial(type); + + const block = new THREE.Mesh(geometry, material); + block.position.set( + (gx - (GRID_SIZE/2 - 0.5)) * BLOCK_SIZE, + gy * BLOCK_SIZE, + (gz - (GRID_SIZE/2 - 0.5)) * BLOCK_SIZE + ); + + block.castShadow = true; + block.receiveShadow = true; + block.userData = { type: type, gridX: gx, gridZ: gz }; // gridX/Z might be off if not in layer structure + + scene.add(block); + extraBlocks.push(block); + } + + function onMouseDown(event) { + if (isAnimating) return; + updateMouse(event); + + if (selectedItem) { + const intersect = getIntersection(); + if (intersect) { + const block = intersect.object; + const face = intersect.face; + + const p = intersect.point.clone().add(face.normal.clone().multiplyScalar(BLOCK_SIZE * 0.5)); + + const nx = Math.round(p.x / BLOCK_SIZE + (GRID_SIZE/2 - 0.5)); + const ny = Math.round(p.y / BLOCK_SIZE); + const nz = Math.round(p.z / BLOCK_SIZE + (GRID_SIZE/2 - 0.5)); + + if (nx >= 0 && nx < GRID_SIZE && nz >= 0 && nz < GRID_SIZE) { + if (!getBlockAt(nx, ny, nz)) { + placeBlock(nx, ny, nz, selectedItem); + return; + } + } + } + } + + isMining = true; + const block = getBlockUnderMouse(); + if (block) startMining(block); + } + + function onMouseUp(event) { + isMining = false; + cancelMining(); + } + + function onMouseMove(event) { + updateMouse(event); + checkCollection(); // Check if hovering over drops + + if (isMining) { + const block = getBlockUnderMouse(); + if (block !== miningBlock) { + if (block) { + startMining(block); + } else { + cancelMining(); + } + } + } + } + + canvas.addEventListener('mousedown', onMouseDown); + canvas.addEventListener('mouseup', onMouseUp); + canvas.addEventListener('mouseleave', onMouseUp); + canvas.addEventListener('mousemove', onMouseMove); + + // Touch support + canvas.addEventListener('touchstart', (e) => { + e.preventDefault(); + if (e.touches.length > 0) { + onMouseDown(e); + } + }, { passive: false }); + + canvas.addEventListener('touchend', (e) => { + e.preventDefault(); + onMouseUp(e); + }); + + canvas.addEventListener('touchmove', (e) => { + e.preventDefault(); + if (isMining && e.touches.length > 0) { + onMouseMove(e); + } + }, { passive: false }); + + + function spawnBlock(gx, gy, gz, type) { + // Check bounds + if (gx < 0 || gx >= GRID_SIZE || gz < 0 || gz >= GRID_SIZE) return; + + // Helper to spawn block without inventory + let geometry = new THREE.BoxGeometry(BLOCK_SIZE, BLOCK_SIZE, BLOCK_SIZE); + let material = getMaterial(type); + const block = new THREE.Mesh(geometry, material); + block.position.set( + (gx - (GRID_SIZE/2 - 0.5)) * BLOCK_SIZE, + gy * BLOCK_SIZE, + (gz - (GRID_SIZE/2 - 0.5)) * BLOCK_SIZE + ); + block.castShadow = true; + block.receiveShadow = true; + block.userData = { type: type, gridX: gx, gridZ: gz }; + scene.add(block); + extraBlocks.push(block); + } + + function updateSaplings() { + for (let i = extraBlocks.length - 1; i >= 0; i--) { + const block = extraBlocks[i]; + if (block.userData.isSapling) { + block.userData.growthTimer++; + + // Update Billboard + if (block.userData.progressBarBg) { + block.userData.progressBarBg.lookAt(camera.position); + } + + // Update Progress + const progress = block.userData.growthTimer / block.userData.maxGrowthTime; + if (block.userData.progressBar) { + block.userData.progressBar.scale.x = progress; + // To scale from left, we need to adjust position? + // Default plane geometry is centered. + // If we scale x, it scales from center. + // We can just update scale. + } + + if (block.userData.growthTimer >= block.userData.maxGrowthTime) { + // Grow! + const { gridX, gridY, gridZ } = block.userData; + // Wait, we didn't save gridY in userData in placeBlock for sapling? + // We saved gridX, gridZ. + // We can calculate gridY from position. + const gy = Math.round(block.position.y / BLOCK_SIZE); + + scene.remove(block); + extraBlocks.splice(i, 1); + + placeStructure(block.userData.gridX, gy, block.userData.gridZ, 'tree'); + } + } + } + } + + // --- Animation Loop --- + function animate() { + requestAnimationFrame(animate); + processMining(); + updateDrops(); + updateSaplings(); + updateTNT(); + checkCollection(); + + // Camera offset logic + const targetOffset = extraBlocks.length > 0 ? 3.5 : 0; + if (Math.abs(cameraOffsetY - targetOffset) > 0.01) { + cameraOffsetY += (targetOffset - cameraOffsetY) * 0.05; + camera.position.set(20, 14 + cameraOffsetY, 20); + camera.lookAt(0, cameraOffsetY, 0); + } else if (cameraOffsetY !== targetOffset) { + cameraOffsetY = targetOffset; + camera.position.set(20, 14 + cameraOffsetY, 20); + camera.lookAt(0, cameraOffsetY, 0); + } + + composer.render(); + } + + // Handle resize + window.addEventListener('resize', () => { + const aspect = canvas.clientWidth / canvas.clientHeight; + const d = 5; + camera.left = -d * aspect; + camera.right = d * aspect; + camera.top = d; + camera.bottom = -d; + camera.updateProjectionMatrix(); + + renderer.setPixelRatio(window.devicePixelRatio); + renderer.setSize(canvas.clientWidth, canvas.clientHeight, false); + composer.setSize(canvas.clientWidth, canvas.clientHeight); + }); + + // Start + initGame(); + animate(); + + // --- Loot Table --- + function getLoot(blockType) { + if (blockType === 'leaves') { + const drops = []; + if (Math.random() < 0.05) drops.push('apple'); + if (Math.random() < 0.05) drops.push('stick'); + if (Math.random() < 0.05) drops.push('sapling'); + return drops; + } + if (blockType === 'stone') return ['cobblestone']; + if (blockType === 'grass') return ['dirt']; + if (blockType === 'coal') return ['coal']; + if (blockType === 'iron') return ['iron']; + if (blockType === 'gold') return ['gold']; + if (blockType === 'diamond') return ['diamond']; + if (blockType === 'emerald') return ['emerald']; + if (blockType === 'log') return ['log']; + if (blockType === 'dirt') return ['dirt']; + if (blockType === 'cobblestone') return ['cobblestone']; + + return [blockType]; + } + + // --- Extrusion Logic --- + const geometryCache = {}; + const extrusionCanvas = document.createElement('canvas'); + const extrusionCtx = extrusionCanvas.getContext('2d'); + + function generateExtrudedGeometry(image, depth = 0.0625) { // 1/16 + const w = image.width; + const h = image.height; + extrusionCanvas.width = w; + extrusionCanvas.height = h; + extrusionCtx.drawImage(image, 0, 0); + const data = extrusionCtx.getImageData(0, 0, w, h).data; + + const positions = []; + const uvs = []; + const normals = []; + const indices = []; + let indexOffset = 0; + + const addFace = (v1, v2, v3, v4, n, u1, u2, u3, u4) => { + positions.push(...v1, ...v2, ...v3, ...v4); + normals.push(...n, ...n, ...n, ...n); + uvs.push(...u1, ...u2, ...u3, ...u4); + indices.push(indexOffset, indexOffset + 1, indexOffset + 2); + indices.push(indexOffset, indexOffset + 2, indexOffset + 3); + indexOffset += 4; + }; + + const isOpaque = (x, y) => { + if (x < 0 || x >= w || y < 0 || y >= h) return false; + return data[(y * w + x) * 4 + 3] > 10; + }; + + const px = 1 / w; + const py = 1 / h; + const d = depth / 2; + + // Scale factor to fit in 0.5x0.5 world unit + const scale = 0.5; + const sx = scale / w; + const sy = scale / h; + const ox = -scale / 2; + const oy = scale / 2; + + for (let y = 0; y < h; y++) { + for (let x = 0; x < w; x++) { + if (isOpaque(x, y)) { + const x0 = ox + x * sx; + const x1 = ox + (x + 1) * sx; + const y0 = oy - y * sy; + const y1 = oy - (y + 1) * sy; + + const u0 = x * px; + const u1 = (x + 1) * px; + const v0 = 1 - y * py; + const v1 = 1 - (y + 1) * py; + + // Front + addFace( + [x0, y0, d], [x0, y1, d], [x1, y1, d], [x1, y0, d], + [0, 0, 1], + [u0, v1], [u0, v0], [u1, v0], [u1, v1] + ); + + // Back + addFace( + [x1, y0, -d], [x1, y1, -d], [x0, y1, -d], [x0, y0, -d], + [0, 0, -1], + [u1, v1], [u1, v0], [u0, v0], [u0, v1] + ); + + // Top + if (!isOpaque(x, y - 1)) { + addFace( + [x0, y0, -d], [x0, y0, d], [x1, y0, d], [x1, y0, -d], + [0, 1, 0], + [u0, v1], [u0, v1], [u1, v1], [u1, v1] // Map to pixel top edge + ); + } + // Bottom + if (!isOpaque(x, y + 1)) { + addFace( + [x0, y1, d], [x0, y1, -d], [x1, y1, -d], [x1, y1, d], + [0, -1, 0], + [u0, v0], [u0, v0], [u1, v0], [u1, v0] // Map to pixel bottom edge + ); + } + // Left + if (!isOpaque(x - 1, y)) { + addFace( + [x0, y0, -d], [x0, y1, -d], [x0, y1, d], [x0, y0, d], + [-1, 0, 0], + [u0, v1], [u0, v0], [u0, v0], [u0, v1] // Map to pixel left edge + ); + } + // Right + if (!isOpaque(x + 1, y)) { + addFace( + [x1, y0, d], [x1, y1, d], [x1, y1, -d], [x1, y0, -d], + [1, 0, 0], + [u1, v1], [u1, v0], [u1, v0], [u1, v1] // Map to pixel right edge + ); + } + } + } + } + + const geometry = new THREE.BufferGeometry(); + geometry.setAttribute('position', new THREE.Float32BufferAttribute(positions, 3)); + geometry.setAttribute('normal', new THREE.Float32BufferAttribute(normals, 3)); + geometry.setAttribute('uv', new THREE.Float32BufferAttribute(uvs, 2)); + geometry.setIndex(indices); + return geometry; + } + + // Shop System + window.toggleShop = function() { + const shop = document.getElementById('shop-modal'); + if (shop.style.display === 'none' || !shop.style.display) { + shop.style.display = 'flex'; + updateShopUI(); + } else { + shop.style.display = 'none'; + } + }; + + function updateShopUI() { + const content = document.getElementById('shop-content'); + content.innerHTML = '

Shop

'; + + // Sell Section + const sellDiv = document.createElement('div'); + sellDiv.className = 'shop-section'; + sellDiv.innerHTML = '

Sell Ores

'; + + Object.entries(SELL_PRICES).forEach(([type, price]) => { + const count = inventory[type] || 0; + if (count > 0) { + const btn = document.createElement('button'); + btn.className = 'shop-btn'; + btn.innerHTML = `Sell ${type} (${count}) - $${price * count}`; + btn.onclick = () => sellOre(type); + sellDiv.appendChild(btn); + } + }); + content.appendChild(sellDiv); + + // Upgrade Section + const upgradeDiv = document.createElement('div'); + upgradeDiv.className = 'shop-section'; + upgradeDiv.innerHTML = '

Upgrades

'; + + Object.entries(UPGRADE_COSTS).forEach(([type, costFunc]) => { + const currentLevel = upgrades[type]; + const cost = costFunc(currentLevel); + + const btn = document.createElement('button'); + btn.className = 'shop-btn'; + btn.innerHTML = `Upgrade ${type} (Lvl ${currentLevel}) - $${cost}`; + if (score < cost) btn.disabled = true; + btn.onclick = () => buyUpgrade(type); + upgradeDiv.appendChild(btn); + }); + content.appendChild(upgradeDiv); + + // Close button + const closeBtn = document.createElement('button'); + closeBtn.className = 'shop-btn close-btn'; + closeBtn.innerText = 'Close'; + closeBtn.style.marginTop = '20px'; + closeBtn.onclick = window.toggleShop; + content.appendChild(closeBtn); + } + + function sellOre(type) { + const count = inventory[type] || 0; + if (count > 0) { + const price = SELL_PRICES[type]; + score += price * count; + inventory[type] = 0; + scoreDisplay.innerText = score; + updateInventoryUI(); + updateShopUI(); + saveGame(); + } + } + + function buyUpgrade(type) { + const costFunc = UPGRADE_COSTS[type]; + const currentLevel = upgrades[type]; + const cost = costFunc(currentLevel); + + if (score >= cost) { + score -= cost; + upgrades[type]++; + + if (type === 'grid_size') { + expandGrid(); + } + + scoreDisplay.innerText = score; + updateShopUI(); + saveGame(); + } + } + + function expandGrid() { + const oldSize = GRID_SIZE; + GRID_SIZE = 5 + (upgrades.grid_size * 2); + const offsetDiff = (GRID_SIZE - oldSize) / 2; + + // Adjust camera + const d = 5 + upgrades.grid_size; + camera.left = -d * aspect; + camera.right = d * aspect; + camera.top = d; + camera.bottom = -d; + camera.updateProjectionMatrix(); + + // Migrate layers + const newLayers = []; + layers.forEach((oldLayer, layerIdx) => { + const newLayer = []; + for (let x = 0; x < GRID_SIZE; x++) { + newLayer[x] = []; + for (let z = 0; z < GRID_SIZE; z++) { + // Map old coordinates to new centered coordinates + const oldX = x - offsetDiff; + const oldZ = z - offsetDiff; + + if (oldX >= 0 && oldX < oldSize && oldZ >= 0 && oldZ < oldSize) { + // Existing block + const block = oldLayer[oldX][oldZ]; + newLayer[x][z] = block; + if (block) { + // Update position + const offset = (GRID_SIZE * BLOCK_SIZE) / 2 - (BLOCK_SIZE / 2); + block.position.x = x * BLOCK_SIZE - offset; + block.position.z = z * BLOCK_SIZE - offset; + } + } else { + // New outer block + // Generate block based on depth + // We use the global 'depth' variable + layerIdx + const absDepth = depth + layerIdx; + const type = getBlockTypeForDepth(absDepth); + + const block = createBlock(x, -layerIdx, z, type); + newLayer[x][z] = block; + scene.add(block); + } + + } + } + newLayers.push(newLayer); + }); + layers = newLayers; + } + + // --- TNT System --- + function updateTNT() { + // Spawning + if (upgrades.tnt_frequency > 0) { + // Base interval 60s, decreases by 5s per level, min 5s + const interval = Math.max(5000, 60000 - (upgrades.tnt_frequency * 5000)); + + // Use performance.now() for smoother timing if needed, but simple counter is fine for now + // Actually, let's use a delta time approach if we had one, but we don't. + // Assuming 60fps, 16.6ms per frame. + tntTimer += 16.6; + + if (tntTimer >= interval) { + tntTimer = 0; + spawnTNT(); + } + } + + // Physics + for (let i = tntProjectiles.length - 1; i >= 0; i--) { + const tnt = tntProjectiles[i]; + tnt.position.y -= 0.2; // Fall speed + tnt.rotation.x += 0.05; + tnt.rotation.z += 0.05; + + // Check collision + // Simple check: if y < something and hits a block + const gx = Math.round(tnt.position.x / BLOCK_SIZE + (GRID_SIZE/2 - 0.5)); + const gz = Math.round(tnt.position.z / BLOCK_SIZE + (GRID_SIZE/2 - 0.5)); + const gy = Math.round(tnt.position.y / BLOCK_SIZE); + + // Check if we hit a block + const block = getBlockAt(gx, gy, gz); + if (block || gy < -depth - 1) { // Hit block or fell too far + explodeTNT(tnt); + tntProjectiles.splice(i, 1); + } + } + } + + function spawnTNT() { + const gx = Math.floor(Math.random() * GRID_SIZE); + const gz = Math.floor(Math.random() * GRID_SIZE); + + const geometry = new THREE.BoxGeometry(0.6, 0.6, 0.6); + const material = new THREE.MeshLambertMaterial({ color: 0xff0000 }); // Red block for now + const tnt = new THREE.Mesh(geometry, material); + + tnt.position.set( + (gx - (GRID_SIZE/2 - 0.5)) * BLOCK_SIZE, + 10, // Start high up + (gz - (GRID_SIZE/2 - 0.5)) * BLOCK_SIZE + ); + + scene.add(tnt); + tntProjectiles.push(tnt); + } + + function explodeTNT(tnt) { + scene.remove(tnt); + + // Explosion effect (simple) + // Radius based on power: 0 -> 1 (3x3), 1 -> 2 (5x5) + const radius = 1 + upgrades.tnt_power; + + const gx = Math.round(tnt.position.x / BLOCK_SIZE + (GRID_SIZE/2 - 0.5)); + const gz = Math.round(tnt.position.z / BLOCK_SIZE + (GRID_SIZE/2 - 0.5)); + + // Find the layer we hit. Since TNT falls, it likely hit the top-most block at gx,gz. + // But we might have hit a specific Y. + // Let's just explode around the impact point. + // We need to find the layer index corresponding to the impact Y. + // tnt.position.y is roughly the block Y. + + const impactY = Math.round(tnt.position.y / BLOCK_SIZE); + + // Find layer index + // layers[0] is at y = -depth + // layers[1] is at y = -depth - 1 + // So y = -depth - layerIdx + // layerIdx = -depth - y + + // Wait, layers are generated at `depth + i`. + // `createBlock` uses `y = -layerIdx`. + // But `generateLayer` calls `createBlock` with `y`? + // No, `generateLayer` returns a 2D array of types. + // `loadGame` rebuilds layers: `createBlock(x, -layerIdx, z, type)`. + // So visually, layer 0 is at Y=0? + + // Ah, `createBlock` sets `block.position.y = y * BLOCK_SIZE`. + // In `loadGame`, `y` is passed as `-layerIdx`. + // So layer 0 is at Y=0. Layer 1 is at Y=-1. + // But `advanceLevel` shifts layers. `layers.shift()`. + // And `animate` moves blocks up. + // `allBlocks.forEach((b, i) => { b.position.y = startPositions[i] + offset; });` + // So the visual Y position changes! + + // This makes `getBlockAt` tricky if it relies on `layers` array index matching Y. + // `getBlockAt`: + // `if (y <= 0) { const layerIdx = -y; ... }` + // This assumes layer 0 is at Y=0, layer 1 at Y=-1. + // But if we advanced a level, the blocks moved UP. + // So the block that was at Y=-1 is now at Y=0. + // And it is now in `layers[0]`. + // So `getBlockAt` logic holds: `layers[0]` is always at Y=0 (visually, after animation). + + // So `impactY` should correspond to `-layerIdx`. + // `layerIdx = -impactY`. + + const centerLayerIdx = -impactY; + + // Explode in radius + // We want a sphere or cylinder explosion? + // Let's do a simple cube/cylinder explosion across layers. + + for (let l = centerLayerIdx - radius; l <= centerLayerIdx + radius; l++) { + if (l < 0 || l >= layers.length) continue; + + for (let x = gx - radius; x <= gx + radius; x++) { + for (let z = gz - radius; z <= gz + radius; z++) { + if (x < 0 || x >= GRID_SIZE || z < 0 || z >= GRID_SIZE) continue; + + // Distance check for round explosion + const dx = x - gx; + const dz = z - gz; + const dl = l - centerLayerIdx; + if (dx*dx + dz*dz + dl*dl > radius*radius) continue; + + const block = layers[l][x][z]; + if (block) { + breakBlock(block, true); + } + } + } + } + + // Also check extra blocks (trees) + for (let i = extraBlocks.length - 1; i >= 0; i--) { + const b = extraBlocks[i]; + const bx = b.userData.gridX; + const bz = b.userData.gridZ; + const by = Math.round(b.position.y / BLOCK_SIZE); + + const dx = bx - gx; + const dz = bz - gz; + const dy = by - impactY; + + if (dx*dx + dz*dz + dy*dy <= radius*radius) { + breakBlock(b, true); + } + } + + checkLayerCleared(); + } + + // Floating Item Animation + function createFloatingItem(type, startX, startY, count) { + const img = document.createElement('img'); + let iconName = type; + if (type === 'coal') iconName = 'coal_ore'; + if (type === 'iron') iconName = 'iron_ore'; + if (type === 'gold') iconName = 'gold_ore'; + if (type === 'diamond') iconName = 'diamond_ore'; + if (type === 'emerald') iconName = 'emerald_ore'; + if (type === 'log') iconName = 'log_oak'; + if (type === 'leaves') iconName = 'leaves_oak'; + if (type === 'grass') iconName = 'grass_side'; + if (type === 'stick') iconName = 'stick'; + if (type === 'sapling') iconName = 'sapling_oak'; + if (type === 'apple') iconName = 'apple'; + if (type === 'planks') iconName = 'planks_oak'; + if (type === 'wood_pickaxe') iconName = 'wood_pickaxe'; + if (type === 'stone_pickaxe') iconName = 'stone_pickaxe'; + if (type === 'iron_pickaxe') iconName = 'iron_pickaxe'; + if (type === 'gold_pickaxe') iconName = 'gold_pickaxe'; + if (type === 'diamond_pickaxe') iconName = 'diamond_pickaxe'; + + if (['apple', 'stick', 'wood_pickaxe', 'stone_pickaxe', 'iron_pickaxe', 'gold_pickaxe', 'diamond_pickaxe'].includes(type)) { + img.src = `items/${iconName}.png`; + } else { + img.src = `blocks/${iconName}.png`; + } + + img.style.position = 'absolute'; + img.style.left = `${startX}px`; + img.style.top = `${startY}px`; + img.style.width = '32px'; + img.style.height = '32px'; + img.style.pointerEvents = 'none'; + img.style.zIndex = '1000'; + + document.body.appendChild(img); + + // Find target + const scrollX = window.scrollX || window.pageXOffset; + const scrollY = window.scrollY || window.pageYOffset; + + let targetX = (window.innerWidth / 2) + scrollX; + let targetY = (window.innerHeight - 50) + scrollY; + + const slot = document.querySelector(`.inventory-slot[data-type="${type}"]`); + if (slot) { + const rect = slot.getBoundingClientRect(); + targetX = rect.left + rect.width / 2 - 16 + scrollX; + targetY = rect.top + rect.height / 2 - 16 + scrollY; + } + + // Control point for Bezier curve + // "Fly away from inv bar" -> Fly UP first + // We want a point that is higher (lower Y) than both start and end + const cpX = (startX + targetX) / 2 + (Math.random() * 100 - 50); + const cpY = Math.min(startY, targetY) - 150 - (Math.random() * 50); + + const startTime = Date.now(); + const duration = 600; // ms + + function animate() { + const now = Date.now(); + const progress = Math.min((now - startTime) / duration, 1); + + // Quadratic Bezier + // B(t) = (1-t)^2 * P0 + 2(1-t)t * P1 + t^2 * P2 + const t = progress; + const invT = 1 - t; + + const x = (invT * invT * startX) + (2 * invT * t * cpX) + (t * t * targetX); + const y = (invT * invT * startY) + (2 * invT * t * cpY) + (t * t * targetY); + + img.style.left = `${x}px`; + img.style.top = `${y}px`; + + // Scale and opacity effects + if (progress > 0.8) { + img.style.opacity = `${1 - (progress - 0.8) * 5}`; // Fade out in last 20% + img.style.transform = `scale(${1 - (progress - 0.8) * 2.5})`; // Shrink in last 20% + } + + if (progress < 1) { + requestAnimationFrame(animate); + } else { + if (img.parentNode) { + document.body.removeChild(img); + } + addToInventory(type, count); + } + } + + requestAnimationFrame(animate); + + } +}); diff --git a/website/sitemap.xml b/website/sitemap.xml index 7cfb4e2..efadfad 100644 --- a/website/sitemap.xml +++ b/website/sitemap.xml @@ -28,4 +28,9 @@ 2025-02-09T22:00:52+00:00 0.50 + + https://lit.ruv.wtf/mining/ + 2025-11-24T00:00:00+00:00 + 0.70 +