From fa7ca59083f226b6d1b74e68cc774c81795d38a8 Mon Sep 17 00:00:00 2001 From: Rahuldesai <84022777+Rahuldesai0@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:27:16 +0530 Subject: [PATCH 1/8] Delete community directory --- community/README.md | 28 - community/audio/README.md | 1 - community/data/blocks.mcpy | 91 --- community/main.py | 304 --------- community/models/__init__.py | 29 - community/models/button.py | 35 - community/models/cactus.py | 40 -- community/models/crop.py | 41 -- community/models/cube.py | 40 -- community/models/door.py | 35 - community/models/fire.py | 29 - community/models/flat.py | 23 - community/models/glass.py | 40 -- community/models/ladder.py | 29 - community/models/leaves.py | 40 -- community/models/lever.py | 35 - community/models/liquid.py | 38 -- community/models/plant.py | 29 - community/models/pressure_plate.py | 23 - community/models/sign.py | 29 - community/models/sign_post.py | 29 - community/models/slab.py | 40 -- community/models/snow.py | 28 - community/models/soil.py | 40 -- community/models/stairs.py | 40 -- community/models/tinted_glass.py | 40 -- community/models/torch.py | 35 - community/poetry.lock | 241 ------- community/poetry.toml | 2 - community/pyproject.toml | 40 -- community/save/0/0/c.0.0.dat | Bin 4660 -> 0 bytes community/save/0/1/c.0.1.dat | Bin 2982 -> 0 bytes community/save/0/1o/c.0.-4.dat | Bin 2765 -> 0 bytes community/save/0/1p/c.0.-3.dat | Bin 2879 -> 0 bytes community/save/0/1q/c.0.-2.dat | Bin 3118 -> 0 bytes community/save/0/1r/c.0.-1.dat | Bin 5052 -> 0 bytes community/save/0/2/c.0.2.dat | Bin 2456 -> 0 bytes community/save/0/3/c.0.3.dat | Bin 2299 -> 0 bytes community/save/1/0/c.1.0.dat | Bin 4931 -> 0 bytes community/save/1/1/c.1.1.dat | Bin 2814 -> 0 bytes community/save/1/1o/c.1.-4.dat | Bin 2572 -> 0 bytes community/save/1/1p/c.1.-3.dat | Bin 3024 -> 0 bytes community/save/1/1q/c.1.-2.dat | Bin 3497 -> 0 bytes community/save/1/1r/c.1.-1.dat | Bin 4441 -> 0 bytes community/save/1/2/c.1.2.dat | Bin 2676 -> 0 bytes community/save/1/3/c.1.3.dat | Bin 2688 -> 0 bytes community/save/1o/0/c.-4.0.dat | Bin 2875 -> 0 bytes community/save/1o/1/c.-4.1.dat | Bin 3195 -> 0 bytes community/save/1o/1o/c.-4.-4.dat | Bin 2985 -> 0 bytes community/save/1o/1p/c.-4.-3.dat | Bin 2493 -> 0 bytes community/save/1o/1q/c.-4.-2.dat | Bin 3195 -> 0 bytes community/save/1o/1r/c.-4.-1.dat | Bin 3154 -> 0 bytes community/save/1o/2/c.-4.2.dat | Bin 3161 -> 0 bytes community/save/1o/3/c.-4.3.dat | Bin 3046 -> 0 bytes community/save/1p/0/c.-3.0.dat | Bin 3549 -> 0 bytes community/save/1p/1/c.-3.1.dat | Bin 4020 -> 0 bytes community/save/1p/1o/c.-3.-4.dat | Bin 3005 -> 0 bytes community/save/1p/1p/c.-3.-3.dat | Bin 3445 -> 0 bytes community/save/1p/1q/c.-3.-2.dat | Bin 3557 -> 0 bytes community/save/1p/1r/c.-3.-1.dat | Bin 3532 -> 0 bytes community/save/1p/2/c.-3.2.dat | Bin 3275 -> 0 bytes community/save/1p/3/c.-3.3.dat | Bin 3179 -> 0 bytes community/save/1q/0/c.-2.0.dat | Bin 3242 -> 0 bytes community/save/1q/1/c.-2.1.dat | Bin 4691 -> 0 bytes community/save/1q/1o/c.-2.-4.dat | Bin 2952 -> 0 bytes community/save/1q/1p/c.-2.-3.dat | Bin 3224 -> 0 bytes community/save/1q/1q/c.-2.-2.dat | Bin 3462 -> 0 bytes community/save/1q/1r/c.-2.-1.dat | Bin 4244 -> 0 bytes community/save/1q/2/c.-2.2.dat | Bin 4194 -> 0 bytes community/save/1q/3/c.-2.3.dat | Bin 3635 -> 0 bytes community/save/1r/0/c.-1.0.dat | Bin 3403 -> 0 bytes community/save/1r/1/c.-1.1.dat | Bin 3780 -> 0 bytes community/save/1r/1o/c.-1.-4.dat | Bin 3190 -> 0 bytes community/save/1r/1p/c.-1.-3.dat | Bin 2670 -> 0 bytes community/save/1r/1q/c.-1.-2.dat | Bin 3176 -> 0 bytes community/save/1r/1r/c.-1.-1.dat | Bin 3231 -> 0 bytes community/save/1r/2/c.-1.2.dat | Bin 3575 -> 0 bytes community/save/1r/3/c.-1.3.dat | Bin 3297 -> 0 bytes community/save/2/0/c.2.0.dat | Bin 2833 -> 0 bytes community/save/2/1/c.2.1.dat | Bin 3342 -> 0 bytes community/save/2/1o/c.2.-4.dat | Bin 3534 -> 0 bytes community/save/2/1p/c.2.-3.dat | Bin 3219 -> 0 bytes community/save/2/1q/c.2.-2.dat | Bin 3080 -> 0 bytes community/save/2/1r/c.2.-1.dat | Bin 2894 -> 0 bytes community/save/2/2/c.2.2.dat | Bin 3201 -> 0 bytes community/save/2/3/c.2.3.dat | Bin 2753 -> 0 bytes community/save/3/0/c.3.0.dat | Bin 3648 -> 0 bytes community/save/3/1/c.3.1.dat | Bin 4240 -> 0 bytes community/save/3/1o/c.3.-4.dat | Bin 4104 -> 0 bytes community/save/3/1p/c.3.-3.dat | Bin 3538 -> 0 bytes community/save/3/1q/c.3.-2.dat | Bin 3027 -> 0 bytes community/save/3/1r/c.3.-1.dat | Bin 2784 -> 0 bytes community/save/3/2/c.3.2.dat | Bin 3168 -> 0 bytes community/save/3/3/c.3.3.dat | Bin 2758 -> 0 bytes community/shaders/alpha_lighting/frag.glsl | 20 - community/shaders/alpha_lighting/vert.glsl | 41 -- community/shaders/colored_lighting/frag.glsl | 21 - community/shaders/colored_lighting/vert.glsl | 43 -- community/src/__init__.py | 0 community/src/chunk/__init__.py | 0 community/src/chunk/chunk.py | 372 ----------- community/src/chunk/subchunk.py | 274 -------- community/src/controllers/__init__.py | 0 community/src/controllers/controller.py | 131 ---- community/src/controllers/joystick.py | 193 ------ community/src/controllers/keyboard_mouse.py | 102 --- community/src/entity/__init__.py | 0 community/src/entity/entity.py | 171 ----- community/src/entity/player.py | 187 ------ community/src/music.py | 9 - community/src/options.py | 69 -- community/src/physics/__init__.py | 0 community/src/physics/collider.py | 65 -- community/src/physics/hit.py | 105 --- community/src/renderer/__init__.py | 0 community/src/renderer/block_type.py | 71 -- community/src/renderer/shader.py | 76 --- community/src/renderer/texture_manager.py | 63 -- community/src/save.py | 116 ---- community/src/util.py | 17 - community/src/world.py | 605 ------------------ community/textures/aqua_cloth.png | Bin 1193 -> 0 bytes community/textures/bedrock.png | Bin 833 -> 0 bytes community/textures/black_cloth.png | Bin 1076 -> 0 bytes community/textures/blue_cloth.png | Bin 1179 -> 0 bytes community/textures/bookshelf.png | Bin 1070 -> 0 bytes community/textures/bricks.png | Bin 1173 -> 0 bytes community/textures/brown_mushroom.png | Bin 634 -> 0 bytes community/textures/cactus_bottom.png | Bin 825 -> 0 bytes community/textures/cactus_side.png | Bin 1015 -> 0 bytes community/textures/cactus_top.png | Bin 1041 -> 0 bytes community/textures/chest_front.png | Bin 1079 -> 0 bytes community/textures/chest_side.png | Bin 1025 -> 0 bytes community/textures/chest_top.png | Bin 1035 -> 0 bytes community/textures/clay.png | Bin 1203 -> 0 bytes community/textures/coal_ore.png | Bin 928 -> 0 bytes community/textures/cobblestone.png | Bin 1360 -> 0 bytes community/textures/crafting_table_top.png | Bin 1256 -> 0 bytes community/textures/crafting_table_x.png | Bin 1171 -> 0 bytes community/textures/crafting_table_z.png | Bin 1205 -> 0 bytes community/textures/crops.png | Bin 1167 -> 0 bytes community/textures/cyan_cloth.png | Bin 1289 -> 0 bytes community/textures/dead_bush.png | Bin 739 -> 0 bytes community/textures/diamond_block.png | Bin 984 -> 0 bytes community/textures/diamond_ore.png | Bin 975 -> 0 bytes community/textures/dirt.png | Bin 1059 -> 0 bytes community/textures/fire.png | Bin 666 -> 0 bytes community/textures/furnace_front.png | Bin 1238 -> 0 bytes community/textures/furnace_side.png | Bin 1190 -> 0 bytes community/textures/furnace_y.png | Bin 1221 -> 0 bytes community/textures/glass.png | Bin 728 -> 0 bytes community/textures/gold_block.png | Bin 1049 -> 0 bytes community/textures/gold_ore.png | Bin 1008 -> 0 bytes community/textures/grass.png | Bin 1349 -> 0 bytes community/textures/grass_side.png | Bin 1152 -> 0 bytes community/textures/gravel.png | Bin 1423 -> 0 bytes community/textures/green_cloth.png | Bin 1071 -> 0 bytes community/textures/grey_cloth.png | Bin 1055 -> 0 bytes community/textures/ice.png | Bin 676 -> 0 bytes community/textures/indigo_cloth.png | Bin 1112 -> 0 bytes community/textures/iron_block.png | Bin 863 -> 0 bytes community/textures/iron_door.png | Bin 1022 -> 0 bytes community/textures/iron_door_bottom_half.png | Bin 1011 -> 0 bytes community/textures/iron_ore.png | Bin 1007 -> 0 bytes community/textures/jukebox.png | Bin 1191 -> 0 bytes community/textures/jukebox_top.png | Bin 1031 -> 0 bytes community/textures/ladder.png | Bin 996 -> 0 bytes community/textures/lava.png | Bin 787 -> 0 bytes community/textures/leaves.png | Bin 1269 -> 0 bytes community/textures/lever.png | Bin 1360 -> 0 bytes community/textures/lime_cloth.png | Bin 1221 -> 0 bytes community/textures/lit_furnace_front.png | Bin 1260 -> 0 bytes community/textures/log_side.png | Bin 1244 -> 0 bytes community/textures/log_y.png | Bin 1085 -> 0 bytes community/textures/magenta_cloth.png | Bin 1257 -> 0 bytes community/textures/mob_spawner.png | Bin 962 -> 0 bytes community/textures/mossy_cobblestone.png | Bin 1401 -> 0 bytes community/textures/obsidian.png | Bin 1183 -> 0 bytes community/textures/off_redstone_torch.png | Bin 659 -> 0 bytes community/textures/off_redstone_torch_top.png | Bin 588 -> 0 bytes community/textures/orange_cloth.png | Bin 1181 -> 0 bytes community/textures/pink_cloth.png | Bin 1294 -> 0 bytes community/textures/planks.png | Bin 247 -> 0 bytes community/textures/purple_cloth.png | Bin 1248 -> 0 bytes community/textures/rails.png | Bin 869 -> 0 bytes community/textures/red_cloth.png | Bin 1189 -> 0 bytes community/textures/red_mushroom.png | Bin 702 -> 0 bytes community/textures/red_rose.png | Bin 702 -> 0 bytes community/textures/redstone_ore.png | Bin 946 -> 0 bytes community/textures/redstone_torch.png | Bin 670 -> 0 bytes community/textures/redstone_torch_top.png | Bin 604 -> 0 bytes community/textures/redstone_wire.png | Bin 627 -> 0 bytes community/textures/sand.png | Bin 1333 -> 0 bytes community/textures/sapling.png | Bin 989 -> 0 bytes community/textures/slab_side.png | Bin 896 -> 0 bytes community/textures/slab_y.png | Bin 881 -> 0 bytes community/textures/snow.png | Bin 770 -> 0 bytes community/textures/snowy_grass_side.png | Bin 1036 -> 0 bytes community/textures/soil.png | Bin 1170 -> 0 bytes community/textures/sponge.png | Bin 1316 -> 0 bytes community/textures/stone.png | Bin 841 -> 0 bytes community/textures/sugar_cane.png | Bin 792 -> 0 bytes community/textures/tnt_bottom.png | Bin 629 -> 0 bytes community/textures/tnt_side.png | Bin 772 -> 0 bytes community/textures/tnt_top.png | Bin 923 -> 0 bytes community/textures/torch.png | Bin 660 -> 0 bytes community/textures/torch_top.png | Bin 589 -> 0 bytes community/textures/unknown.png | Bin 5519 -> 0 bytes community/textures/violet_cloth.png | Bin 1264 -> 0 bytes community/textures/water.png | Bin 760 -> 0 bytes community/textures/white_cloth.png | Bin 1273 -> 0 bytes community/textures/wooden_door.png | Bin 1132 -> 0 bytes community/textures/yellow_cloth.png | Bin 1280 -> 0 bytes community/textures/yellow_flower.png | Bin 694 -> 0 bytes 214 files changed, 4245 deletions(-) delete mode 100644 community/README.md delete mode 100644 community/audio/README.md delete mode 100644 community/data/blocks.mcpy delete mode 100644 community/main.py delete mode 100644 community/models/__init__.py delete mode 100644 community/models/button.py delete mode 100644 community/models/cactus.py delete mode 100644 community/models/crop.py delete mode 100644 community/models/cube.py delete mode 100644 community/models/door.py delete mode 100644 community/models/fire.py delete mode 100644 community/models/flat.py delete mode 100644 community/models/glass.py delete mode 100644 community/models/ladder.py delete mode 100644 community/models/leaves.py delete mode 100644 community/models/lever.py delete mode 100644 community/models/liquid.py delete mode 100644 community/models/plant.py delete mode 100644 community/models/pressure_plate.py delete mode 100644 community/models/sign.py delete mode 100644 community/models/sign_post.py delete mode 100644 community/models/slab.py delete mode 100644 community/models/snow.py delete mode 100644 community/models/soil.py delete mode 100644 community/models/stairs.py delete mode 100644 community/models/tinted_glass.py delete mode 100644 community/models/torch.py delete mode 100644 community/poetry.lock delete mode 100644 community/poetry.toml delete mode 100644 community/pyproject.toml delete mode 100644 community/save/0/0/c.0.0.dat delete mode 100644 community/save/0/1/c.0.1.dat delete mode 100644 community/save/0/1o/c.0.-4.dat delete mode 100644 community/save/0/1p/c.0.-3.dat delete mode 100644 community/save/0/1q/c.0.-2.dat delete mode 100644 community/save/0/1r/c.0.-1.dat delete mode 100644 community/save/0/2/c.0.2.dat delete mode 100644 community/save/0/3/c.0.3.dat delete mode 100644 community/save/1/0/c.1.0.dat delete mode 100644 community/save/1/1/c.1.1.dat delete mode 100644 community/save/1/1o/c.1.-4.dat delete mode 100644 community/save/1/1p/c.1.-3.dat delete mode 100644 community/save/1/1q/c.1.-2.dat delete mode 100644 community/save/1/1r/c.1.-1.dat delete mode 100644 community/save/1/2/c.1.2.dat delete mode 100644 community/save/1/3/c.1.3.dat delete mode 100644 community/save/1o/0/c.-4.0.dat delete mode 100644 community/save/1o/1/c.-4.1.dat delete mode 100644 community/save/1o/1o/c.-4.-4.dat delete mode 100644 community/save/1o/1p/c.-4.-3.dat delete mode 100644 community/save/1o/1q/c.-4.-2.dat delete mode 100644 community/save/1o/1r/c.-4.-1.dat delete mode 100644 community/save/1o/2/c.-4.2.dat delete mode 100644 community/save/1o/3/c.-4.3.dat delete mode 100644 community/save/1p/0/c.-3.0.dat delete mode 100644 community/save/1p/1/c.-3.1.dat delete mode 100644 community/save/1p/1o/c.-3.-4.dat delete mode 100644 community/save/1p/1p/c.-3.-3.dat delete mode 100644 community/save/1p/1q/c.-3.-2.dat delete mode 100644 community/save/1p/1r/c.-3.-1.dat delete mode 100644 community/save/1p/2/c.-3.2.dat delete mode 100644 community/save/1p/3/c.-3.3.dat delete mode 100644 community/save/1q/0/c.-2.0.dat delete mode 100644 community/save/1q/1/c.-2.1.dat delete mode 100644 community/save/1q/1o/c.-2.-4.dat delete mode 100644 community/save/1q/1p/c.-2.-3.dat delete mode 100644 community/save/1q/1q/c.-2.-2.dat delete mode 100644 community/save/1q/1r/c.-2.-1.dat delete mode 100644 community/save/1q/2/c.-2.2.dat delete mode 100644 community/save/1q/3/c.-2.3.dat delete mode 100644 community/save/1r/0/c.-1.0.dat delete mode 100644 community/save/1r/1/c.-1.1.dat delete mode 100644 community/save/1r/1o/c.-1.-4.dat delete mode 100644 community/save/1r/1p/c.-1.-3.dat delete mode 100644 community/save/1r/1q/c.-1.-2.dat delete mode 100644 community/save/1r/1r/c.-1.-1.dat delete mode 100644 community/save/1r/2/c.-1.2.dat delete mode 100644 community/save/1r/3/c.-1.3.dat delete mode 100644 community/save/2/0/c.2.0.dat delete mode 100644 community/save/2/1/c.2.1.dat delete mode 100644 community/save/2/1o/c.2.-4.dat delete mode 100644 community/save/2/1p/c.2.-3.dat delete mode 100644 community/save/2/1q/c.2.-2.dat delete mode 100644 community/save/2/1r/c.2.-1.dat delete mode 100644 community/save/2/2/c.2.2.dat delete mode 100644 community/save/2/3/c.2.3.dat delete mode 100644 community/save/3/0/c.3.0.dat delete mode 100644 community/save/3/1/c.3.1.dat delete mode 100644 community/save/3/1o/c.3.-4.dat delete mode 100644 community/save/3/1p/c.3.-3.dat delete mode 100644 community/save/3/1q/c.3.-2.dat delete mode 100644 community/save/3/1r/c.3.-1.dat delete mode 100644 community/save/3/2/c.3.2.dat delete mode 100644 community/save/3/3/c.3.3.dat delete mode 100644 community/shaders/alpha_lighting/frag.glsl delete mode 100644 community/shaders/alpha_lighting/vert.glsl delete mode 100644 community/shaders/colored_lighting/frag.glsl delete mode 100644 community/shaders/colored_lighting/vert.glsl delete mode 100644 community/src/__init__.py delete mode 100644 community/src/chunk/__init__.py delete mode 100644 community/src/chunk/chunk.py delete mode 100644 community/src/chunk/subchunk.py delete mode 100644 community/src/controllers/__init__.py delete mode 100644 community/src/controllers/controller.py delete mode 100644 community/src/controllers/joystick.py delete mode 100644 community/src/controllers/keyboard_mouse.py delete mode 100644 community/src/entity/__init__.py delete mode 100644 community/src/entity/entity.py delete mode 100644 community/src/entity/player.py delete mode 100644 community/src/music.py delete mode 100644 community/src/options.py delete mode 100644 community/src/physics/__init__.py delete mode 100644 community/src/physics/collider.py delete mode 100644 community/src/physics/hit.py delete mode 100644 community/src/renderer/__init__.py delete mode 100644 community/src/renderer/block_type.py delete mode 100644 community/src/renderer/shader.py delete mode 100644 community/src/renderer/texture_manager.py delete mode 100644 community/src/save.py delete mode 100644 community/src/util.py delete mode 100644 community/src/world.py delete mode 100644 community/textures/aqua_cloth.png delete mode 100644 community/textures/bedrock.png delete mode 100644 community/textures/black_cloth.png delete mode 100644 community/textures/blue_cloth.png delete mode 100644 community/textures/bookshelf.png delete mode 100644 community/textures/bricks.png delete mode 100644 community/textures/brown_mushroom.png delete mode 100644 community/textures/cactus_bottom.png delete mode 100644 community/textures/cactus_side.png delete mode 100644 community/textures/cactus_top.png delete mode 100644 community/textures/chest_front.png delete mode 100644 community/textures/chest_side.png delete mode 100644 community/textures/chest_top.png delete mode 100644 community/textures/clay.png delete mode 100644 community/textures/coal_ore.png delete mode 100644 community/textures/cobblestone.png delete mode 100644 community/textures/crafting_table_top.png delete mode 100644 community/textures/crafting_table_x.png delete mode 100644 community/textures/crafting_table_z.png delete mode 100644 community/textures/crops.png delete mode 100644 community/textures/cyan_cloth.png delete mode 100644 community/textures/dead_bush.png delete mode 100644 community/textures/diamond_block.png delete mode 100644 community/textures/diamond_ore.png delete mode 100644 community/textures/dirt.png delete mode 100644 community/textures/fire.png delete mode 100644 community/textures/furnace_front.png delete mode 100644 community/textures/furnace_side.png delete mode 100644 community/textures/furnace_y.png delete mode 100644 community/textures/glass.png delete mode 100644 community/textures/gold_block.png delete mode 100644 community/textures/gold_ore.png delete mode 100644 community/textures/grass.png delete mode 100644 community/textures/grass_side.png delete mode 100644 community/textures/gravel.png delete mode 100644 community/textures/green_cloth.png delete mode 100644 community/textures/grey_cloth.png delete mode 100644 community/textures/ice.png delete mode 100644 community/textures/indigo_cloth.png delete mode 100644 community/textures/iron_block.png delete mode 100644 community/textures/iron_door.png delete mode 100644 community/textures/iron_door_bottom_half.png delete mode 100644 community/textures/iron_ore.png delete mode 100644 community/textures/jukebox.png delete mode 100644 community/textures/jukebox_top.png delete mode 100644 community/textures/ladder.png delete mode 100644 community/textures/lava.png delete mode 100644 community/textures/leaves.png delete mode 100644 community/textures/lever.png delete mode 100644 community/textures/lime_cloth.png delete mode 100644 community/textures/lit_furnace_front.png delete mode 100644 community/textures/log_side.png delete mode 100644 community/textures/log_y.png delete mode 100644 community/textures/magenta_cloth.png delete mode 100644 community/textures/mob_spawner.png delete mode 100644 community/textures/mossy_cobblestone.png delete mode 100644 community/textures/obsidian.png delete mode 100644 community/textures/off_redstone_torch.png delete mode 100644 community/textures/off_redstone_torch_top.png delete mode 100644 community/textures/orange_cloth.png delete mode 100644 community/textures/pink_cloth.png delete mode 100644 community/textures/planks.png delete mode 100644 community/textures/purple_cloth.png delete mode 100644 community/textures/rails.png delete mode 100644 community/textures/red_cloth.png delete mode 100644 community/textures/red_mushroom.png delete mode 100644 community/textures/red_rose.png delete mode 100644 community/textures/redstone_ore.png delete mode 100644 community/textures/redstone_torch.png delete mode 100644 community/textures/redstone_torch_top.png delete mode 100644 community/textures/redstone_wire.png delete mode 100644 community/textures/sand.png delete mode 100644 community/textures/sapling.png delete mode 100644 community/textures/slab_side.png delete mode 100644 community/textures/slab_y.png delete mode 100644 community/textures/snow.png delete mode 100644 community/textures/snowy_grass_side.png delete mode 100644 community/textures/soil.png delete mode 100644 community/textures/sponge.png delete mode 100644 community/textures/stone.png delete mode 100644 community/textures/sugar_cane.png delete mode 100644 community/textures/tnt_bottom.png delete mode 100644 community/textures/tnt_side.png delete mode 100644 community/textures/tnt_top.png delete mode 100644 community/textures/torch.png delete mode 100644 community/textures/torch_top.png delete mode 100644 community/textures/unknown.png delete mode 100644 community/textures/violet_cloth.png delete mode 100644 community/textures/water.png delete mode 100644 community/textures/white_cloth.png delete mode 100644 community/textures/wooden_door.png delete mode 100644 community/textures/yellow_cloth.png delete mode 100644 community/textures/yellow_flower.png diff --git a/community/README.md b/community/README.md deleted file mode 100644 index 6358b087..00000000 --- a/community/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# Community - -*TODO* It would be cool to make a video to showcase community at some point and link it here! - -The `community` directory is for experiments & contributions made by other people on the latest tutorial's code (see PR [#29](https://github.com/obiwac/python-minecraft-clone/pull/29)). -It more generally extends the project with functionality I've yet to cover in a tutorial or that I don't intend on covering at all. - -Anyone (you included!) is more than welcome to open a PR to add their own contribution, be it a bug fix, a new build in the world save, or a new feature entirely! - -Characteristic contributions are contributions which add something to the code -- bugfixes will get merged to the source of all episodes if relevant to them. - -The community has several features and options that can be toggled in `src/options.py`: - -- Render Distance: At what distance (in chunks) should chunks stop being rendered -- FOV: Camera field of view - -- Indirect Rendering: Alternative way of rendering that has less overhead but is only supported on devices supporting OpenGL 4.2 -- Advanced OpenGL: Rudimentary occlusion culling using hardware occlusion queries, however it is not performant and will cause pipeline stalls and decrease performance on most hardware - mostly for testing if it improves framerate -- Chunk Updates: Chunk updates per chunk every tick - 1 gives the best performance and best framerate, however, as Python is an slow language, 1 may increase chunk building time by an ludicrous amount -- Vsync: Vertical sync, may yield smoother framerate but bigger frame times and input lag -- Max CPU Ahead frames: Number of frames that the CPU can go ahead of a frame before syncing with the GPU by waiting for it to complete the execution of the command buffer, using `glClientWaitSync()` -- Smooth FPS: Legacy CPU/GPU sync by forcing the flushing and completion of command buffer using `glFinish()`, not recommended - similar to setting Max CPU Ahead Frames to 0. Mostly for testing whether it makes any difference with `glClientWaitSync()` - -- Smooth lighting: Smoothes the light of each vertex to achieve a linear interpolation of light on each fragment, hence creating a smoother light effect - it also adds ambient occlusion, to simulate light blocked by opaque objects (chunk update/build time will be severely affected by this feature) -- Fancy translucency: Better translucency blending, avoid weird looking artefacts - disable on low-end hardware -- Mipmap (minification filtering): Texture filtering used on higher distances. Default is `GL_NEAREST` (no filtering) (more info in `options.py`) -- Colored lighting: Uses an alternative shader program to achieve a more colored lighting; it aims to look similar to Beta 1.8+ (no performance loss should be incurred) -- Antialiasing: Experimental feature diff --git a/community/audio/README.md b/community/audio/README.md deleted file mode 100644 index 8bb7b880..00000000 --- a/community/audio/README.md +++ /dev/null @@ -1 +0,0 @@ -For music download `.ogg` (or other) from [archive.org](https://archive.org/details/C418-MinecraftSoundtrackVolumeAlpha/) and put them into the music `dir`. diff --git a/community/data/blocks.mcpy b/community/data/blocks.mcpy deleted file mode 100644 index 999194ba..00000000 --- a/community/data/blocks.mcpy +++ /dev/null @@ -1,91 +0,0 @@ -# block ID's from: -# https://www.minecraftforum.net/forums/minecraft-java-edition/discussion/114963-all-item-block-ids-in-one-place -# (with some slight modifications) - -1: name "Stone", texture.all stone -2: name "Grass", texture.top grass, texture.bottom dirt, texture.sides grass_side -3: name "Dirt", texture.all dirt -4: name "Cobblestone", texture.all cobblestone -5: name "Planks", texture.all planks -6: name "Sapling", model models.plant, texture.all sapling -7: name "Bedrock", texture.all bedrock -8: name "Water", model models.liquid, texture.all water -9: sameas 8, name "Stationary Water" -10: name "Lava", model models.liquid, texture.all lava -11: sameas 10, name "Stationary Lava" -12: name "Sand", texture.all sand -13: name "Gravel", texture.all gravel -14: name "Gold Ore", texture.all gold_ore -15: name "Iron Ore", texture.all iron_ore -16: name "Coal Ore", texture.all coal_ore -17: name "Log", texture.y log_y, texture.sides log_side -18: name "Leaves", model models.leaves, texture.all leaves -19: name "Sponge", texture.all sponge -20: name "Glass", model models.glass, texture.all glass -21: name "Red Cloth", texture.all red_cloth -22: name "Orange Cloth", texture.all orange_cloth -23: name "Yellow Cloth", texture.all yellow_cloth -24: name "Lime Cloth", texture.all lime_cloth -25: name "Green Cloth", texture.all green_cloth -26: name "Aqua Cloth", texture.all aqua_cloth -27: name "Cyan Cloth", texture.all cyan_cloth -28: name "Blue Cloth", texture.all blue_cloth -29: name "Purple Cloth", texture.all purple_cloth -30: name "Indigo Cloth", texture.all indigo_cloth -31: name "Violet Cloth", texture.all violet_cloth -32: name "Magenta Cloth", texture.all magenta_cloth -33: name "Pink Cloth", texture.all pink_cloth -34: name "Black Cloth", texture.all black_cloth -35: name "Grey Cloth", texture.all grey_cloth -36: name "White Cloth", texture.all white_cloth -37: name "Yellow Flower", model models.plant, texture.all yellow_flower -38: name "Red Rose", model models.plant, texture.all red_rose -39: name "Brown Mushroom", model models.plant, texture.all brown_mushroom -40: name "Red Mushroom", model models.plant, texture.all red_mushroom -41: name "Gold Block", texture.all gold_block -42: name "Iron Block", texture.all iron_block -43: name "Double Slab", texture.sides slab_side, texture.y slab_y -44: name "Slab", model models.slab, texture.sides slab_side, texture.y slab_y -45: name "Bricks", texture.all bricks -46: name "TNT", texture.top tnt_top, texture.bottom tnt_bottom, texture.sides tnt_side -47: name "Bookshelf", texture.y planks, texture.sides bookshelf -48: name "Mossy Cobblestone", texture.all mossy_cobblestone -49: name "Obsidian", texture.all obsidian -50: name "Torch", model models.torch, texture.top torch_top, texture.bottom torch, texture.sides torch -51: name "Fire", model models.fire, texture.all fire -# I know, the model name isn't great, but it's got the same graphical properties -52: name "Mob Spawner", model models.leaves, texture.all mob_spawner -53: name "Wooden Stairs", model models.stairs, texture.all planks -54: name "Chest", texture.y chest_top, texture.sides chest_side, texture.front chest_front -55: name "Redstone Wire", model models.flat, texture.all redstone_wire -56: name "Diamond Ore", texture.all diamond_ore -57: name "Diamond Block", texture.all diamond_block -58: name "Crafting Table", texture.top crafting_table_top, texture.bottom planks, texture.x crafting_table_x, texture.z crafting_table_z -59: name "Crops", model models.crop, texture.all crops -60: name "Soil", model models.soil, texture.all dirt, texture.top soil -61: name "Furnace", texture.y furnace_y, texture.sides furnace_side, texture.front furnace_front -62: name "Lit Furnace", texture.y furnace_y, texture.sides furnace_side, texture.front lit_furnace_front -63: name "Sign Post", model models.sign_post, texture.all planks -64: name "Wooden Door", model models.door, texture.all wooden_door -65: name "Ladder", model models.ladder, texture.all ladder -66: name "Rails", model models.flat, texture.all rails -67: name "Cobblestone Stairs", model models.stairs, texture.all cobblestone -68: name "Sign", model models.sign, texture.all planks -69: name "Lever", model models.lever, texture.all lever -70: name "Stone Pressure Plate", model models.pressure_plate, texture.all stone -71: name "Iron Door", model models.door, texture.all iron_door_bottom_half -72: name "Wooden Pressure Plate", model models.pressure_plate, texture.all planks -73: name "Redstone Ore", texture.all redstone_ore -# when we implement a lighting system, this will have some kind of "emissive" property -74: name "Lit Redstone Ore", texture.all redstone_ore -75: name "Redstone Torch", model models.torch, texture.top redstone_torch_top, texture.bottom redstone_torch, texture.sides redstone_torch -76: name "Redstone Torch (Off)", model models.torch, texture.top off_redstone_torch_top, texture.bottom off_redstone_torch, texture.sides off_redstone_torch -77: name "Stone Button", model models.button, texture.all stone -78: name "Snow", model models.snow, texture.all snow -# ditto as for mob spawners (52) -79: name "Ice", model models.tinted_glass, texture.all ice -80: name "Snow Block", texture.all snow -81: name "Cactus", model models.cactus, texture.top cactus_top, texture.bottom cactus_bottom, texture.sides cactus_side -82: name "Clay", texture.all clay -83: name "Sugar Cane", model models.plant, texture.all sugar_cane -84: name "Jukebox", texture.all jukebox, texture.top jukebox_top diff --git a/community/main.py b/community/main.py deleted file mode 100644 index 90f8e4aa..00000000 --- a/community/main.py +++ /dev/null @@ -1,304 +0,0 @@ -import platform -import ctypes -import logging -import random -import time -import os -from collections import deque - -import pyglet - -from src.music import MusicPlayer - -pyglet.options["shadow_window"] = False -pyglet.options["debug_gl"] = False -pyglet.options["search_local_libs"] = True -pyglet.options["audio"] = ("openal", "pulse", "directsound", "xaudio2", "silent") - -import pyglet.gl as gl - -from src.renderer.shader import Shader -from src.renderer.texture_manager import TextureManager -from src.world import World -from src.entity.player import Player -from src.controllers.joystick import JoystickController -from src.controllers.keyboard_mouse import KeyboardMouseController - -import src.options as options - - -class InternalConfig: - def __init__(self, options): - self.RENDER_DISTANCE = options.RENDER_DISTANCE - self.FOV = options.FOV - self.INDIRECT_RENDERING = options.INDIRECT_RENDERING - self.ADVANCED_OPENGL = options.ADVANCED_OPENGL - self.CHUNK_UPDATES = options.CHUNK_UPDATES - self.VSYNC = options.VSYNC - self.MAX_CPU_AHEAD_FRAMES = options.MAX_CPU_AHEAD_FRAMES - self.SMOOTH_FPS = options.SMOOTH_FPS - self.SMOOTH_LIGHTING = options.SMOOTH_LIGHTING - self.FANCY_TRANSLUCENCY = options.FANCY_TRANSLUCENCY - self.MIPMAP_TYPE = options.MIPMAP_TYPE - self.COLORED_LIGHTING = options.COLORED_LIGHTING - self.ANTIALIASING = options.ANTIALIASING - - -class Window(pyglet.window.Window): - def __init__(self, **args): - super().__init__(**args) - - # Options - self.options = InternalConfig(options) - - if self.options.INDIRECT_RENDERING and not gl.gl_info.have_version(4, 2): - raise RuntimeError( - """Indirect Rendering is not supported on your hardware - This feature is only supported on OpenGL 4.2+, but your driver doesnt seem to support it, - Please disable "INDIRECT_RENDERING" in options.py""" - ) - - # F3 Debug Screen - - self.show_f3 = False - self.f3 = pyglet.text.Label( - "", - x=10, - y=self.height - 10, - font_size=16, - color=(255, 255, 255, 255), - width=self.width // 3, - multiline=True, - ) - self.system_info = f"""Python: {platform.python_implementation()} {platform.python_version()} -System: {platform.machine()} {platform.system()} {platform.release()} {platform.version()} -CPU: {platform.processor()} -Display: {gl.gl_info.get_renderer()} -{gl.gl_info.get_version()}""" - - logging.info(f"System Info: {self.system_info}") - # create shader - - logging.info("Compiling Shaders") - if not self.options.COLORED_LIGHTING: - self.shader = Shader("shaders/alpha_lighting/vert.glsl", "shaders/alpha_lighting/frag.glsl") - else: - self.shader = Shader("shaders/colored_lighting/vert.glsl", "shaders/colored_lighting/frag.glsl") - self.shader_sampler_location = self.shader.find_uniform(b"u_TextureArraySampler") - self.shader.use() - - # create textures - logging.info("Creating Texture Array") - self.texture_manager = TextureManager(16, 16, 256) - - # create world - - self.world = World(self.shader, None, self.texture_manager, self.options) - - # player stuff - - logging.info("Setting up player & camera") - self.player = Player(self.world, self.shader, self.width, self.height) - self.world.player = self.player - - # pyglet stuff - pyglet.clock.schedule(self.player.update_interpolation) - pyglet.clock.schedule_interval(self.update, 1 / 60) - self.mouse_captured = False - - # misc stuff - - self.holding = 50 - - # bind textures - - gl.glActiveTexture(gl.GL_TEXTURE0) - gl.glBindTexture(gl.GL_TEXTURE_2D_ARRAY, self.world.texture_manager.texture_array) - gl.glUniform1i(self.shader_sampler_location, 0) - - # enable cool stuff - - gl.glEnable(gl.GL_DEPTH_TEST) - gl.glEnable(gl.GL_CULL_FACE) - gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA) - - if self.options.ANTIALIASING: - gl.glEnable(gl.GL_MULTISAMPLE) - gl.glEnable(gl.GL_SAMPLE_ALPHA_TO_COVERAGE) - gl.glSampleCoverage(0.5, gl.GL_TRUE) - - # controls stuff - self.controls = [0, 0, 0] - - # joystick stuff - self.joystick_controller = JoystickController(self) - - # mouse and keyboard stuff - self.keyboard_mouse = KeyboardMouseController(self) - - # music stuff - logging.info("Loading audio") - try: - self.music = [ - pyglet.media.load(os.path.join("audio/music", file)) - for file in os.listdir("audio/music") - if os.path.isfile(os.path.join("audio/music", file)) - ] - except FileNotFoundError: - self.music = [] - - self.media_player = MusicPlayer() - self.media_player.volume = 0.5 - - if len(self.music) > 0: - self.media_player.queue(random.choice(self.music)) - self.media_player.play() - else: - self.media_player.standby = True - - # GPU command syncs - self.fences = deque() - - def toggle_fullscreen(self): - self.set_fullscreen(not self.fullscreen) - - def on_close(self): - logging.info("Deleting media player") - self.media_player.delete() - for fence in self.fences: - gl.glDeleteSync(fence) - - super().on_close() - - def update_f3(self, delta_time): - """Update the F3 debug screen content""" - - player_chunk_pos = self.world.get_chunk_position(self.player.position) - player_local_pos = self.world.get_local_position(self.player.position) - chunk_count = len(self.world.chunks) - visible_chunk_count = len(self.world.visible_chunks) - quad_count = sum(chunk.mesh_quad_count for chunk in self.world.chunks.values()) - visible_quad_count = sum(chunk.mesh_quad_count for chunk in self.world.visible_chunks) - self.f3.text = f""" -{round(1 / delta_time)} FPS ({self.world.chunk_update_counter} Chunk Updates) {"inf" if not self.options.VSYNC else "vsync"}{"ao" if self.options.SMOOTH_LIGHTING else ""} -C: {visible_chunk_count} / {chunk_count} pC: {self.world.pending_chunk_update_count} pU: {len(self.world.chunk_building_queue)} aB: {chunk_count} -Client Singleplayer @{round(delta_time * 1000)} ms tick {round(1 / delta_time)} TPS - -XYZ: ( X: {round(self.player.position[0], 3)} / Y: {round(self.player.position[1], 3)} / Z: {round(self.player.position[2], 3)} ) -Block: {self.player.rounded_position[0]} {self.player.rounded_position[1]} {self.player.rounded_position[2]} -Chunk: {player_local_pos[0]} {player_local_pos[1]} {player_local_pos[2]} in {player_chunk_pos[0]} {player_chunk_pos[1]} {player_chunk_pos[2]} -Light: {max(self.world.get_light(self.player.rounded_position), self.world.get_skylight(self.player.rounded_position))} ({self.world.get_skylight(self.player.rounded_position)} sky, {self.world.get_light(self.player.rounded_position)} block) - -{self.system_info} - -Renderer: {"OpenGL 3.3 VAOs" if not self.options.INDIRECT_RENDERING else "OpenGL 4.0 VAOs Indirect"} {"Conditional" if self.options.ADVANCED_OPENGL else ""} -Buffers: {chunk_count} -Vertex Data: {round(quad_count * 28 * ctypes.sizeof(gl.GLfloat) / 1048576, 3)} MiB ({quad_count} Quads) -Visible Quads: {visible_quad_count} -Buffer Uploading: Direct (glBufferSubData) -""" - - def update(self, delta_time): - """Every tick""" - if self.show_f3: - self.update_f3(delta_time) - - if not self.media_player.source and len(self.music) > 0: - if not self.media_player.standby: - self.media_player.standby = True - self.media_player.next_time = round(time.time()) + random.randint(240, 360) - elif time.time() >= self.media_player.next_time: - self.media_player.standby = False - self.media_player.queue(random.choice(self.music)) - self.media_player.play() - - if not self.mouse_captured: - self.player.input = [0, 0, 0] - - self.joystick_controller.update_controller() - self.player.update(delta_time) - - self.world.tick(delta_time) - - def on_draw(self): - gl.glEnable(gl.GL_DEPTH_TEST) - self.shader.use() - self.player.update_matrices() - - while len(self.fences) > self.options.MAX_CPU_AHEAD_FRAMES: - fence = self.fences.popleft() - gl.glClientWaitSync(fence, gl.GL_SYNC_FLUSH_COMMANDS_BIT, 2147483647) - gl.glDeleteSync(fence) - - self.clear() - self.world.prepare_rendering() - self.world.draw() - - # Draw the F3 Debug screen - if self.show_f3: - self.f3.draw() - - # CPU - GPU Sync - if not self.options.SMOOTH_FPS: - # self.fences.append(gl.glFenceSync(gl.GL_SYNC_GPU_COMMANDS_COMPLETE, 0)) - # Broken in pyglet 2; glFenceSync is missing - pass - else: - gl.glFinish() - - # input functions - - def on_resize(self, width, height): - logging.info(f"Resize {width} * {height}") - gl.glViewport(0, 0, width, height) - - self.player.view_width = width - self.player.view_height = height - self.f3.y = self.height - 10 - self.f3.width = self.width // 3 - - -class Game: - def __init__(self): - self.config = gl.Config( - double_buffer=True, - major_version=3, - minor_version=3, - depth_size=16, - sample_buffers=bool(options.ANTIALIASING), - samples=options.ANTIALIASING, - ) - self.window = Window( - config=self.config, width=852, height=480, caption="Minecraft clone", resizable=True, vsync=options.VSYNC - ) - - def run(self): - pyglet.app.run(interval=0) - - -def init_logger(): - log_folder = "logs/" - log_filename = f"{time.time()}.log" - log_path = os.path.join(log_folder, log_filename) - - if not os.path.isdir(log_folder): - os.mkdir(log_folder) - - with open(log_path, "x") as file: - file.write("[LOGS]\n") - - logging.basicConfig( - level=logging.INFO, - filename=log_path, - format="[%(asctime)s] [%(processName)s/%(threadName)s/%(levelname)s] (%(module)s.py/%(funcName)s) %(message)s", - ) - - -def main(): - init_logger() - game = Game() - game.run() - - -if __name__ == "__main__": - main() diff --git a/community/models/__init__.py b/community/models/__init__.py deleted file mode 100644 index c7a74dac..00000000 --- a/community/models/__init__.py +++ /dev/null @@ -1,29 +0,0 @@ -# all possible models - -__all__ = [ - "cube", - "plant", - "liquid", - "leaves", - "glass", - "slab", - "torch", - "fire", - "stairs", - "flat", - "crop", - "soil", - "sign_post", - "door", - "ladder", - "sign", - "lever", - "pressure_plate", - "button", - "snow", - "cactus", - "tinted_glass", -] - -from . import cube -from . import * diff --git a/community/models/button.py b/community/models/button.py deleted file mode 100644 index f6bf0b1b..00000000 --- a/community/models/button.py +++ /dev/null @@ -1,35 +0,0 @@ -transparent = 2 -is_cube = False -glass = False -translucent = False - -# fmt: off - -colliders = [] - -vertex_positions = [ - [ 0.5, 0.0, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.0, -0.5], # right - [-0.5, 0.0, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.0, 0.5], # left - [ 0.5, 0.0, 0.5, 0.5, 0.0, -0.5, -0.5, 0.0, -0.5, -0.5, 0.0, 0.5], # top - [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom - [-0.5, 0.0, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.0, 0.5], # front - [ 0.5, 0.0, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.0, -0.5], # back -] - -tex_coords = [ - [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], - [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], - [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], -] - -shading_values = [ - [0.6, 0.6, 0.6, 0.6], - [0.6, 0.6, 0.6, 0.6], - [1.0, 1.0, 1.0, 1.0], - [0.4, 0.4, 0.4, 0.4], - [0.8, 0.8, 0.8, 0.8], - [0.8, 0.8, 0.8, 0.8], -] diff --git a/community/models/cactus.py b/community/models/cactus.py deleted file mode 100644 index bf5b2dd8..00000000 --- a/community/models/cactus.py +++ /dev/null @@ -1,40 +0,0 @@ -translucent = False -transparent = 1 -is_cube = False -glass = False - -# fmt: off - -colliders = [ - [ - (-0.4375, -0.5, -0.4375), - ( 0.4375, 0.5, 0.4375) - ] -] - -vertex_positions = [ - [ 0.4375, 0.5000, 0.5000, 0.4375, -0.5000, 0.5000, 0.4375, -0.5000, -0.5000, 0.4375, 0.5000, -0.5000], # right - [-0.4375, 0.5000, -0.5000, -0.4375, -0.5000, -0.5000, -0.4375, -0.5000, 0.5000, -0.4375, 0.5000, 0.5000], # left - [ 0.5000, 0.5000, 0.5000, 0.5000, 0.5000, -0.5000, -0.5000, 0.5000, -0.5000, -0.5000, 0.5000, 0.5000], # top - [-0.5000, -0.5000, 0.5000, -0.5000, -0.5000, -0.5000, 0.5000, -0.5000, -0.5000, 0.5000, -0.5000, 0.5000], # bottom - [-0.5000, 0.5000, 0.4375, -0.5000, -0.5000, 0.4375, 0.5000, -0.5000, 0.4375, 0.5000, 0.5000, 0.4375], # front - [ 0.5000, 0.5000, -0.4375, 0.5000, -0.5000, -0.4375, -0.5000, -0.5000, -0.4375, -0.5000, 0.5000, -0.4375], # back -] - -tex_coords = [ - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], -] - -shading_values = [ - [0.6, 0.6, 0.6, 0.6], - [0.6, 0.6, 0.6, 0.6], - [1.0, 1.0, 1.0, 1.0], - [0.4, 0.4, 0.4, 0.4], - [0.8, 0.8, 0.8, 0.8], - [0.8, 0.8, 0.8, 0.8], -] diff --git a/community/models/crop.py b/community/models/crop.py deleted file mode 100644 index 8f387b3c..00000000 --- a/community/models/crop.py +++ /dev/null @@ -1,41 +0,0 @@ -transparent = 2 -is_cube = False -glass = False -translucent = False - -# fmt: off - -colliders = [] - -vertex_positions = [ - [ 0.25, 0.4375, 0.50, 0.25, -0.5625, 0.50, 0.25, -0.5625, -0.50, 0.25, 0.4375, -0.50], # right - [ 0.25, 0.4375, -0.50, 0.25, -0.5625, -0.50, 0.25, -0.5625, 0.50, 0.25, 0.4375, 0.50], # right - [-0.25, 0.4375, -0.50, -0.25, -0.5625, -0.50, -0.25, -0.5625, 0.50, -0.25, 0.4375, 0.50], # left - [-0.25, 0.4375, 0.50, -0.25, -0.5625, 0.50, -0.25, -0.5625, -0.50, -0.25, 0.4375, -0.50], # left - [-0.50, 0.4375, 0.25, -0.50, -0.5625, 0.25, 0.50, -0.5625, 0.25, 0.50, 0.4375, 0.25], # front - [ 0.50, 0.4375, 0.25, 0.50, -0.5625, 0.25, -0.50, -0.5625, 0.25, -0.50, 0.4375, 0.25], # front - [ 0.50, 0.4375, -0.25, 0.50, -0.5625, -0.25, -0.50, -0.5625, -0.25, -0.50, 0.4375, -0.25], # back - [-0.50, 0.4375, -0.25, -0.50, -0.5625, -0.25, 0.50, -0.5625, -0.25, 0.50, 0.4375, -0.25], # back -] - -tex_coords = [ - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], -] - -shading_values = [ - [0.6, 0.6, 0.6, 0.6], - [0.6, 0.6, 0.6, 0.6], - [0.6, 0.6, 0.6, 0.6], - [0.6, 0.6, 0.6, 0.6], - [0.8, 0.8, 0.8, 0.8], - [0.8, 0.8, 0.8, 0.8], - [0.8, 0.8, 0.8, 0.8], - [0.8, 0.8, 0.8, 0.8], -] diff --git a/community/models/cube.py b/community/models/cube.py deleted file mode 100644 index 475b8545..00000000 --- a/community/models/cube.py +++ /dev/null @@ -1,40 +0,0 @@ -transparent = 0 -is_cube = True -glass = False -translucent = False - -# fmt: off - -colliders = [ - [ - (-0.5, -0.5, -0.5), - ( 0.5, 0.5, 0.5) - ] -] - -vertex_positions = [ - [ 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5], # right - [-0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.5, 0.5], # left - [ 0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5], # top - [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom - [-0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5], # front - [ 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5], # back -] - -tex_coords = [ - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], -] - -shading_values = [ - [0.6, 0.6, 0.6, 0.6], - [0.6, 0.6, 0.6, 0.6], - [1.0, 1.0, 1.0, 1.0], - [0.4, 0.4, 0.4, 0.4], - [0.8, 0.8, 0.8, 0.8], - [0.8, 0.8, 0.8, 0.8], -] diff --git a/community/models/door.py b/community/models/door.py deleted file mode 100644 index b34a2f9d..00000000 --- a/community/models/door.py +++ /dev/null @@ -1,35 +0,0 @@ -transparent = 0 -is_cube = True -glass = False -translucent = False - -# fmt: off - -colliders = [] - -vertex_positions = [ - [ 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5], # right - [-0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.5, 0.5], # left - [ 0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5], # top - [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom - [-0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5], # front - [ 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5], # back -] - -tex_coords = [ - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], -] - -shading_values = [ - [0.6, 0.6, 0.6, 0.6], - [0.6, 0.6, 0.6, 0.6], - [1.0, 1.0, 1.0, 1.0], - [0.4, 0.4, 0.4, 0.4], - [0.8, 0.8, 0.8, 0.8], - [0.8, 0.8, 0.8, 0.8], -] diff --git a/community/models/fire.py b/community/models/fire.py deleted file mode 100644 index 0ff98b1d..00000000 --- a/community/models/fire.py +++ /dev/null @@ -1,29 +0,0 @@ -transparent = 2 -is_cube = False -glass = False -translucent = False - -# fmt: off - -colliders = [] - -vertex_positions = [ - [-0.3536, 0.5000, 0.3536, -0.3536, -0.5000, 0.3536, 0.3536, -0.5000, -0.3536, 0.3536, 0.5000, -0.3536], - [-0.3536, 0.5000, -0.3536, -0.3536, -0.5000, -0.3536, 0.3536, -0.5000, 0.3536, 0.3536, 0.5000, 0.3536], - [ 0.3536, 0.5000, -0.3536, 0.3536, -0.5000, -0.3536, -0.3536, -0.5000, 0.3536, -0.3536, 0.5000, 0.3536], - [ 0.3536, 0.5000, 0.3536, 0.3536, -0.5000, 0.3536, -0.3536, -0.5000, -0.3536, -0.3536, 0.5000, -0.3536], -] - -tex_coords = [ - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], -] - -shading_values = [ - [1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0], -] diff --git a/community/models/flat.py b/community/models/flat.py deleted file mode 100644 index 8d5e40f3..00000000 --- a/community/models/flat.py +++ /dev/null @@ -1,23 +0,0 @@ -transparent = 2 -is_cube = False -glass = False -translucent = False - -# fmt: off - -colliders = [] - -vertex_positions = [ - [ 0.5, -0.4375, 0.5, 0.5, -0.4375, -0.5, -0.5, -0.4375, -0.5, -0.5, -0.4375, 0.5], # top - [-0.5, -0.4375, 0.5, -0.5, -0.4375, -0.5, 0.5, -0.4375, -0.5, 0.5, -0.4375, 0.5], # bottom -] - -tex_coords = [ - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], -] - -shading_values = [ - [1.0, 1.0, 1.0, 1.0], - [0.4, 0.4, 0.4, 0.4], -] diff --git a/community/models/glass.py b/community/models/glass.py deleted file mode 100644 index d259bf90..00000000 --- a/community/models/glass.py +++ /dev/null @@ -1,40 +0,0 @@ -transparent = 2 -is_cube = True -glass = True -translucent = False - -# fmt: off - -colliders = [ - [ - (-0.5, -0.5, -0.5), - ( 0.5, 0.5, 0.5) - ] -] - -vertex_positions = [ - [ 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5], # right - [-0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.5, 0.5], # left - [ 0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5], # top - [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom - [-0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5], # front - [ 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5], # back -] - -tex_coords = [ - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], -] - -shading_values = [ - [0.6, 0.6, 0.6, 0.6], - [0.6, 0.6, 0.6, 0.6], - [1.0, 1.0, 1.0, 1.0], - [0.4, 0.4, 0.4, 0.4], - [0.8, 0.8, 0.8, 0.8], - [0.8, 0.8, 0.8, 0.8], -] diff --git a/community/models/ladder.py b/community/models/ladder.py deleted file mode 100644 index 0ff98b1d..00000000 --- a/community/models/ladder.py +++ /dev/null @@ -1,29 +0,0 @@ -transparent = 2 -is_cube = False -glass = False -translucent = False - -# fmt: off - -colliders = [] - -vertex_positions = [ - [-0.3536, 0.5000, 0.3536, -0.3536, -0.5000, 0.3536, 0.3536, -0.5000, -0.3536, 0.3536, 0.5000, -0.3536], - [-0.3536, 0.5000, -0.3536, -0.3536, -0.5000, -0.3536, 0.3536, -0.5000, 0.3536, 0.3536, 0.5000, 0.3536], - [ 0.3536, 0.5000, -0.3536, 0.3536, -0.5000, -0.3536, -0.3536, -0.5000, 0.3536, -0.3536, 0.5000, 0.3536], - [ 0.3536, 0.5000, 0.3536, 0.3536, -0.5000, 0.3536, -0.3536, -0.5000, -0.3536, -0.3536, 0.5000, -0.3536], -] - -tex_coords = [ - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], -] - -shading_values = [ - [1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0], -] diff --git a/community/models/leaves.py b/community/models/leaves.py deleted file mode 100644 index ea004e08..00000000 --- a/community/models/leaves.py +++ /dev/null @@ -1,40 +0,0 @@ -transparent = 1 -is_cube = True -glass = False -translucent = False - -# fmt: off - -colliders = [ - [ - (-0.5, -0.5, -0.5), - ( 0.5, 0.5, 0.5) - ] -] - -vertex_positions = [ - [ 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5], # right - [-0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.5, 0.5], # left - [ 0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5], # top - [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom - [-0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5], # front - [ 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5], # back -] - -tex_coords = [ - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], -] - -shading_values = [ - [0.6, 0.6, 0.6, 0.6], - [0.6, 0.6, 0.6, 0.6], - [1.0, 1.0, 1.0, 1.0], - [0.4, 0.4, 0.4, 0.4], - [0.8, 0.8, 0.8, 0.8], - [0.8, 0.8, 0.8, 0.8], -] diff --git a/community/models/lever.py b/community/models/lever.py deleted file mode 100644 index 46359dd6..00000000 --- a/community/models/lever.py +++ /dev/null @@ -1,35 +0,0 @@ -transparent = 1 -is_cube = False -glass = False -translucent = False - -# fmt: off - -colliders = [] - -vertex_positions = [ - [ 0.5, 0.0, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.0, -0.5], # right - [-0.5, 0.0, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.0, 0.5], # left - [ 0.5, 0.0, 0.5, 0.5, 0.0, -0.5, -0.5, 0.0, -0.5, -0.5, 0.0, 0.5], # top - [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom - [-0.5, 0.0, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.0, 0.5], # front - [ 0.5, 0.0, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.0, -0.5], # back -] - -tex_coords = [ - [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], - [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], - [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], -] - -shading_values = [ - [0.6, 0.6, 0.6, 0.6], - [0.6, 0.6, 0.6, 0.6], - [1.0, 1.0, 1.0, 1.0], - [0.4, 0.4, 0.4, 0.4], - [0.8, 0.8, 0.8, 0.8], - [0.8, 0.8, 0.8, 0.8], -] diff --git a/community/models/liquid.py b/community/models/liquid.py deleted file mode 100644 index 6df86bcf..00000000 --- a/community/models/liquid.py +++ /dev/null @@ -1,38 +0,0 @@ -# in the end, it'd be nice to have it so that liquids fill up the whole block when they have a block above them -# this would avoid the problems this solution has - -transparent = 1 -is_cube = True -glass = True -translucent = True - -# fmt: off - -colliders = [] - -vertex_positions = [ - [ 0.500, 0.375, 0.500, 0.500, -0.625, 0.500, 0.500, -0.625, -0.500, 0.500, 0.375, -0.500], # right - [-0.500, 0.375, -0.500, -0.500, -0.625, -0.500, -0.500, -0.625, 0.500, -0.500, 0.375, 0.500], # left - [ 0.500, 0.375, 0.500, 0.500, 0.375, -0.500, -0.500, 0.375, -0.500, -0.500, 0.375, 0.500], # top - [-0.500, -0.625, 0.500, -0.500, -0.625, -0.500, 0.500, -0.625, -0.500, 0.500, -0.625, 0.500], # bottom - [-0.500, 0.375, 0.500, -0.500, -0.625, 0.500, 0.500, -0.625, 0.500, 0.500, 0.375, 0.500], # front - [ 0.500, 0.375, -0.500, 0.500, -0.625, -0.500, -0.500, -0.625, -0.500, -0.500, 0.375, -0.500], # back -] - -tex_coords = [ - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], -] - -shading_values = [ - [0.6, 0.6, 0.6, 0.6], - [0.6, 0.6, 0.6, 0.6], - [1.0, 1.0, 1.0, 1.0], - [0.4, 0.4, 0.4, 0.4], - [0.8, 0.8, 0.8, 0.8], - [0.8, 0.8, 0.8, 0.8], -] diff --git a/community/models/plant.py b/community/models/plant.py deleted file mode 100644 index 0ff98b1d..00000000 --- a/community/models/plant.py +++ /dev/null @@ -1,29 +0,0 @@ -transparent = 2 -is_cube = False -glass = False -translucent = False - -# fmt: off - -colliders = [] - -vertex_positions = [ - [-0.3536, 0.5000, 0.3536, -0.3536, -0.5000, 0.3536, 0.3536, -0.5000, -0.3536, 0.3536, 0.5000, -0.3536], - [-0.3536, 0.5000, -0.3536, -0.3536, -0.5000, -0.3536, 0.3536, -0.5000, 0.3536, 0.3536, 0.5000, 0.3536], - [ 0.3536, 0.5000, -0.3536, 0.3536, -0.5000, -0.3536, -0.3536, -0.5000, 0.3536, -0.3536, 0.5000, 0.3536], - [ 0.3536, 0.5000, 0.3536, 0.3536, -0.5000, 0.3536, -0.3536, -0.5000, -0.3536, -0.3536, 0.5000, -0.3536], -] - -tex_coords = [ - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], -] - -shading_values = [ - [1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0], -] diff --git a/community/models/pressure_plate.py b/community/models/pressure_plate.py deleted file mode 100644 index 8d5e40f3..00000000 --- a/community/models/pressure_plate.py +++ /dev/null @@ -1,23 +0,0 @@ -transparent = 2 -is_cube = False -glass = False -translucent = False - -# fmt: off - -colliders = [] - -vertex_positions = [ - [ 0.5, -0.4375, 0.5, 0.5, -0.4375, -0.5, -0.5, -0.4375, -0.5, -0.5, -0.4375, 0.5], # top - [-0.5, -0.4375, 0.5, -0.5, -0.4375, -0.5, 0.5, -0.4375, -0.5, 0.5, -0.4375, 0.5], # bottom -] - -tex_coords = [ - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], -] - -shading_values = [ - [1.0, 1.0, 1.0, 1.0], - [0.4, 0.4, 0.4, 0.4], -] diff --git a/community/models/sign.py b/community/models/sign.py deleted file mode 100644 index 0ff98b1d..00000000 --- a/community/models/sign.py +++ /dev/null @@ -1,29 +0,0 @@ -transparent = 2 -is_cube = False -glass = False -translucent = False - -# fmt: off - -colliders = [] - -vertex_positions = [ - [-0.3536, 0.5000, 0.3536, -0.3536, -0.5000, 0.3536, 0.3536, -0.5000, -0.3536, 0.3536, 0.5000, -0.3536], - [-0.3536, 0.5000, -0.3536, -0.3536, -0.5000, -0.3536, 0.3536, -0.5000, 0.3536, 0.3536, 0.5000, 0.3536], - [ 0.3536, 0.5000, -0.3536, 0.3536, -0.5000, -0.3536, -0.3536, -0.5000, 0.3536, -0.3536, 0.5000, 0.3536], - [ 0.3536, 0.5000, 0.3536, 0.3536, -0.5000, 0.3536, -0.3536, -0.5000, -0.3536, -0.3536, 0.5000, -0.3536], -] - -tex_coords = [ - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], -] - -shading_values = [ - [1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0], -] diff --git a/community/models/sign_post.py b/community/models/sign_post.py deleted file mode 100644 index 0ff98b1d..00000000 --- a/community/models/sign_post.py +++ /dev/null @@ -1,29 +0,0 @@ -transparent = 2 -is_cube = False -glass = False -translucent = False - -# fmt: off - -colliders = [] - -vertex_positions = [ - [-0.3536, 0.5000, 0.3536, -0.3536, -0.5000, 0.3536, 0.3536, -0.5000, -0.3536, 0.3536, 0.5000, -0.3536], - [-0.3536, 0.5000, -0.3536, -0.3536, -0.5000, -0.3536, 0.3536, -0.5000, 0.3536, 0.3536, 0.5000, 0.3536], - [ 0.3536, 0.5000, -0.3536, 0.3536, -0.5000, -0.3536, -0.3536, -0.5000, 0.3536, -0.3536, 0.5000, 0.3536], - [ 0.3536, 0.5000, 0.3536, 0.3536, -0.5000, 0.3536, -0.3536, -0.5000, -0.3536, -0.3536, 0.5000, -0.3536], -] - -tex_coords = [ - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], -] - -shading_values = [ - [1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0], - [1.0, 1.0, 1.0, 1.0], -] diff --git a/community/models/slab.py b/community/models/slab.py deleted file mode 100644 index e2932597..00000000 --- a/community/models/slab.py +++ /dev/null @@ -1,40 +0,0 @@ -transparent = 2 -is_cube = False -glass = False -translucent = False - -# fmt: off - -colliders = [ - [ - (-0.5, -0.5, -0.5), - ( 0.5, 0.0, 0.5) - ] -] - -vertex_positions = [ - [ 0.5, 0.0, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.0, -0.5], # right - [-0.5, 0.0, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.0, 0.5], # left - [ 0.5, 0.0, 0.5, 0.5, 0.0, -0.5, -0.5, 0.0, -0.5, -0.5, 0.0, 0.5], # top - [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom - [-0.5, 0.0, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.0, 0.5], # front - [ 0.5, 0.0, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.0, -0.5], # back -] - -tex_coords = [ - [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], - [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], - [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], -] - -shading_values = [ - [0.6, 0.6, 0.6, 0.6], - [0.6, 0.6, 0.6, 0.6], - [1.0, 1.0, 1.0, 1.0], - [0.4, 0.4, 0.4, 0.4], - [0.8, 0.8, 0.8, 0.8], - [0.8, 0.8, 0.8, 0.8], -] diff --git a/community/models/snow.py b/community/models/snow.py deleted file mode 100644 index 0c02b11d..00000000 --- a/community/models/snow.py +++ /dev/null @@ -1,28 +0,0 @@ -transparent = 2 -is_cube = False -glass = False -translucent = False - -# fmt: off - -colliders = [ - [ - (-0.5, -0.5000, -0.5), - ( 0.5, -0.4375, 0.5) - ] -] - -vertex_positions = [ - [ 0.5, -0.4375, 0.5, 0.5, -0.4375, -0.5, -0.5, -0.4375, -0.5, -0.5, -0.4375, 0.5], # top - [-0.5, -0.4375, 0.5, -0.5, -0.4375, -0.5, 0.5, -0.4375, -0.5, 0.5, -0.4375, 0.5], # bottom -] - -tex_coords = [ - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], -] - -shading_values = [ - [1.0, 1.0, 1.0, 1.0], - [0.4, 0.4, 0.4, 0.4], -] diff --git a/community/models/soil.py b/community/models/soil.py deleted file mode 100644 index 2a77a097..00000000 --- a/community/models/soil.py +++ /dev/null @@ -1,40 +0,0 @@ -transparent = 2 -is_cube = False -glass = False -translucent = False - -# fmt: off - -colliders = [ - [ - (-0.5, -0.5000, -0.5), - ( 0.5, 0.4375, 0.5) - ] -] - -vertex_positions = [ - [ 0.5, 0.4375, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.4375, -0.5], # right - [-0.5, 0.4375, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.4375, 0.5], # left - [ 0.5, 0.4375, 0.5, 0.5, 0.4375, -0.5, -0.5, 0.4375, -0.5, -0.5, 0.4375, 0.5], # top - [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom - [-0.5, 0.4375, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.4375, 0.5], # front - [ 0.5, 0.4375, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.4375, -0.5], # back -] - -tex_coords = [ - [0.0, 0.9375, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.9375, 0.0], - [0.0, 0.9375, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.9375, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 0.9375, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.9375, 0.0], - [0.0, 0.9375, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.9375, 0.0], -] - -shading_values = [ - [0.6, 0.6, 0.6, 0.6], - [0.6, 0.6, 0.6, 0.6], - [1.0, 1.0, 1.0, 1.0], - [0.4, 0.4, 0.4, 0.4], - [0.8, 0.8, 0.8, 0.8], - [0.8, 0.8, 0.8, 0.8], -] diff --git a/community/models/stairs.py b/community/models/stairs.py deleted file mode 100644 index e2932597..00000000 --- a/community/models/stairs.py +++ /dev/null @@ -1,40 +0,0 @@ -transparent = 2 -is_cube = False -glass = False -translucent = False - -# fmt: off - -colliders = [ - [ - (-0.5, -0.5, -0.5), - ( 0.5, 0.0, 0.5) - ] -] - -vertex_positions = [ - [ 0.5, 0.0, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.0, -0.5], # right - [-0.5, 0.0, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.0, 0.5], # left - [ 0.5, 0.0, 0.5, 0.5, 0.0, -0.5, -0.5, 0.0, -0.5, -0.5, 0.0, 0.5], # top - [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom - [-0.5, 0.0, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.0, 0.5], # front - [ 0.5, 0.0, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.0, -0.5], # back -] - -tex_coords = [ - [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], - [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], - [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], -] - -shading_values = [ - [0.6, 0.6, 0.6, 0.6], - [0.6, 0.6, 0.6, 0.6], - [1.0, 1.0, 1.0, 1.0], - [0.4, 0.4, 0.4, 0.4], - [0.8, 0.8, 0.8, 0.8], - [0.8, 0.8, 0.8, 0.8], -] diff --git a/community/models/tinted_glass.py b/community/models/tinted_glass.py deleted file mode 100644 index a2b247e6..00000000 --- a/community/models/tinted_glass.py +++ /dev/null @@ -1,40 +0,0 @@ -transparent = 1 -is_cube = True -glass = True -translucent = True - -# fmt: off - -colliders = [ - [ - (-0.5, -0.5, -0.5), - ( 0.5, 0.5, 0.5) - ] -] - -vertex_positions = [ - [ 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5], # right - [-0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.5, 0.5], # left - [ 0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5], # top - [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom - [-0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5], # front - [ 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5], # back -] - -tex_coords = [ - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], -] - -shading_values = [ - [0.6, 0.6, 0.6, 0.6], - [0.6, 0.6, 0.6, 0.6], - [1.0, 1.0, 1.0, 1.0], - [0.4, 0.4, 0.4, 0.4], - [0.8, 0.8, 0.8, 0.8], - [0.8, 0.8, 0.8, 0.8], -] diff --git a/community/models/torch.py b/community/models/torch.py deleted file mode 100644 index 32e37d65..00000000 --- a/community/models/torch.py +++ /dev/null @@ -1,35 +0,0 @@ -transparent = 2 -is_cube = False -glass = False -translucent = False - -# fmt: off - -colliders = [] - -vertex_positions = [ - [ 0.0625, 0.5, 0.5, 0.0625, -0.5, 0.5, 0.0625, -0.5, -0.5, 0.0625, 0.5, -0.5], # right - [-0.0625, 0.5, -0.5, -0.0625, -0.5, -0.5, -0.0625, -0.5, 0.5, -0.0625, 0.5, 0.5], # left - [ 0.5, 0.125, 0.5, 0.5, 0.125, -0.5, -0.5, 0.125, -0.5, -0.5, 0.125, 0.5], # top - [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom - [-0.5, 0.5, 0.0625, -0.5, -0.5, 0.0625, 0.5, -0.5, 0.0625, 0.5, 0.5, 0.0625], # front - [ 0.5, 0.5, -0.0625, 0.5, -0.5, -0.0625, -0.5, -0.5, -0.0625, -0.5, 0.5, -0.0625], # back -] - -tex_coords = [ - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], - [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], -] - -shading_values = [ - [0.6, 0.6, 0.6, 0.6], - [0.6, 0.6, 0.6, 0.6], - [1.0, 1.0, 1.0, 1.0], - [0.4, 0.4, 0.4, 0.4], - [0.8, 0.8, 0.8, 0.8], - [0.8, 0.8, 0.8, 0.8], -] diff --git a/community/poetry.lock b/community/poetry.lock deleted file mode 100644 index 65bf2325..00000000 --- a/community/poetry.lock +++ /dev/null @@ -1,241 +0,0 @@ -# This file is automatically @generated by Poetry 1.8.3 and should not be changed by hand. - -[[package]] -name = "base36" -version = "0.1.1" -description = "Yet another implementation for the positional numeral system using 36 as the radix." -optional = false -python-versions = "*" -files = [ - {file = "base36-0.1.1-py2.py3-none-any.whl", hash = "sha256:15eec75cf938a2186349e6b6dfc7320c73c065921493be83808c68d909b15763"}, - {file = "base36-0.1.1.tar.gz", hash = "sha256:6f221783c5499bd5fd4a1102054df9638d6232ff5ca850c21fd1efe5070c1a96"}, -] - -[[package]] -name = "nbtlib" -version = "2.0.4" -description = "A python package to read and edit nbt data" -optional = false -python-versions = ">=3.8,<4.0" -files = [ - {file = "nbtlib-2.0.4-py3-none-any.whl", hash = "sha256:38d571fbf2f7ebd640639461b47fc79919a8ea8e74633ffcc8aa6b2acfc9c889"}, - {file = "nbtlib-2.0.4.tar.gz", hash = "sha256:d4b861047fb9beb546a2e3f3b776dc61b0fb5831375752a39961882e2f76cc93"}, -] - -[package.dependencies] -numpy = "*" - -[[package]] -name = "nodeenv" -version = "1.9.1" -description = "Node.js virtual environment builder" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" -files = [ - {file = "nodeenv-1.9.1-py2.py3-none-any.whl", hash = "sha256:ba11c9782d29c27c70ffbdda2d7415098754709be8a7056d79a737cd901155c9"}, - {file = "nodeenv-1.9.1.tar.gz", hash = "sha256:6ec12890a2dab7946721edbfbcd91f3319c6ccc9aec47be7c7e6b7011ee6645f"}, -] - -[[package]] -name = "numpy" -version = "2.0.1" -description = "Fundamental package for array computing in Python" -optional = false -python-versions = ">=3.9" -files = [ - {file = "numpy-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:0fbb536eac80e27a2793ffd787895242b7f18ef792563d742c2d673bfcb75134"}, - {file = "numpy-2.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:69ff563d43c69b1baba77af455dd0a839df8d25e8590e79c90fcbe1499ebde42"}, - {file = "numpy-2.0.1-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:1b902ce0e0a5bb7704556a217c4f63a7974f8f43e090aff03fcf262e0b135e02"}, - {file = "numpy-2.0.1-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:f1659887361a7151f89e79b276ed8dff3d75877df906328f14d8bb40bb4f5101"}, - {file = "numpy-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4658c398d65d1b25e1760de3157011a80375da861709abd7cef3bad65d6543f9"}, - {file = "numpy-2.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:4127d4303b9ac9f94ca0441138acead39928938660ca58329fe156f84b9f3015"}, - {file = "numpy-2.0.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:e5eeca8067ad04bc8a2a8731183d51d7cbaac66d86085d5f4766ee6bf19c7f87"}, - {file = "numpy-2.0.1-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:9adbd9bb520c866e1bfd7e10e1880a1f7749f1f6e5017686a5fbb9b72cf69f82"}, - {file = "numpy-2.0.1-cp310-cp310-win32.whl", hash = "sha256:7b9853803278db3bdcc6cd5beca37815b133e9e77ff3d4733c247414e78eb8d1"}, - {file = "numpy-2.0.1-cp310-cp310-win_amd64.whl", hash = "sha256:81b0893a39bc5b865b8bf89e9ad7807e16717f19868e9d234bdaf9b1f1393868"}, - {file = "numpy-2.0.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:75b4e316c5902d8163ef9d423b1c3f2f6252226d1aa5cd8a0a03a7d01ffc6268"}, - {file = "numpy-2.0.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6e4eeb6eb2fced786e32e6d8df9e755ce5be920d17f7ce00bc38fcde8ccdbf9e"}, - {file = "numpy-2.0.1-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:a1e01dcaab205fbece13c1410253a9eea1b1c9b61d237b6fa59bcc46e8e89343"}, - {file = "numpy-2.0.1-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:a8fc2de81ad835d999113ddf87d1ea2b0f4704cbd947c948d2f5513deafe5a7b"}, - {file = "numpy-2.0.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:5a3d94942c331dd4e0e1147f7a8699a4aa47dffc11bf8a1523c12af8b2e91bbe"}, - {file = "numpy-2.0.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:15eb4eca47d36ec3f78cde0a3a2ee24cf05ca7396ef808dda2c0ddad7c2bde67"}, - {file = "numpy-2.0.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:b83e16a5511d1b1f8a88cbabb1a6f6a499f82c062a4251892d9ad5d609863fb7"}, - {file = "numpy-2.0.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1f87fec1f9bc1efd23f4227becff04bd0e979e23ca50cc92ec88b38489db3b55"}, - {file = "numpy-2.0.1-cp311-cp311-win32.whl", hash = "sha256:36d3a9405fd7c511804dc56fc32974fa5533bdeb3cd1604d6b8ff1d292b819c4"}, - {file = "numpy-2.0.1-cp311-cp311-win_amd64.whl", hash = "sha256:08458fbf403bff5e2b45f08eda195d4b0c9b35682311da5a5a0a0925b11b9bd8"}, - {file = "numpy-2.0.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:6bf4e6f4a2a2e26655717a1983ef6324f2664d7011f6ef7482e8c0b3d51e82ac"}, - {file = "numpy-2.0.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d6fddc5fe258d3328cd8e3d7d3e02234c5d70e01ebe377a6ab92adb14039cb4"}, - {file = "numpy-2.0.1-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:5daab361be6ddeb299a918a7c0864fa8618af66019138263247af405018b04e1"}, - {file = "numpy-2.0.1-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:ea2326a4dca88e4a274ba3a4405eb6c6467d3ffbd8c7d38632502eaae3820587"}, - {file = "numpy-2.0.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:529af13c5f4b7a932fb0e1911d3a75da204eff023ee5e0e79c1751564221a5c8"}, - {file = "numpy-2.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6790654cb13eab303d8402354fabd47472b24635700f631f041bd0b65e37298a"}, - {file = "numpy-2.0.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:cbab9fc9c391700e3e1287666dfd82d8666d10e69a6c4a09ab97574c0b7ee0a7"}, - {file = "numpy-2.0.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:99d0d92a5e3613c33a5f01db206a33f8fdf3d71f2912b0de1739894668b7a93b"}, - {file = "numpy-2.0.1-cp312-cp312-win32.whl", hash = "sha256:173a00b9995f73b79eb0191129f2455f1e34c203f559dd118636858cc452a1bf"}, - {file = "numpy-2.0.1-cp312-cp312-win_amd64.whl", hash = "sha256:bb2124fdc6e62baae159ebcfa368708867eb56806804d005860b6007388df171"}, - {file = "numpy-2.0.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:bfc085b28d62ff4009364e7ca34b80a9a080cbd97c2c0630bb5f7f770dae9414"}, - {file = "numpy-2.0.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:8fae4ebbf95a179c1156fab0b142b74e4ba4204c87bde8d3d8b6f9c34c5825ef"}, - {file = "numpy-2.0.1-cp39-cp39-macosx_14_0_arm64.whl", hash = "sha256:72dc22e9ec8f6eaa206deb1b1355eb2e253899d7347f5e2fae5f0af613741d06"}, - {file = "numpy-2.0.1-cp39-cp39-macosx_14_0_x86_64.whl", hash = "sha256:ec87f5f8aca726117a1c9b7083e7656a9d0d606eec7299cc067bb83d26f16e0c"}, - {file = "numpy-2.0.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1f682ea61a88479d9498bf2091fdcd722b090724b08b31d63e022adc063bad59"}, - {file = "numpy-2.0.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8efc84f01c1cd7e34b3fb310183e72fcdf55293ee736d679b6d35b35d80bba26"}, - {file = "numpy-2.0.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:3fdabe3e2a52bc4eff8dc7a5044342f8bd9f11ef0934fcd3289a788c0eb10018"}, - {file = "numpy-2.0.1-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:24a0e1befbfa14615b49ba9659d3d8818a0f4d8a1c5822af8696706fbda7310c"}, - {file = "numpy-2.0.1-cp39-cp39-win32.whl", hash = "sha256:f9cf5ea551aec449206954b075db819f52adc1638d46a6738253a712d553c7b4"}, - {file = "numpy-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:e9e81fa9017eaa416c056e5d9e71be93d05e2c3c2ab308d23307a8bc4443c368"}, - {file = "numpy-2.0.1-pp39-pypy39_pp73-macosx_10_9_x86_64.whl", hash = "sha256:61728fba1e464f789b11deb78a57805c70b2ed02343560456190d0501ba37b0f"}, - {file = "numpy-2.0.1-pp39-pypy39_pp73-macosx_14_0_x86_64.whl", hash = "sha256:12f5d865d60fb9734e60a60f1d5afa6d962d8d4467c120a1c0cda6eb2964437d"}, - {file = "numpy-2.0.1-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:eacf3291e263d5a67d8c1a581a8ebbcfd6447204ef58828caf69a5e3e8c75990"}, - {file = "numpy-2.0.1-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:2c3a346ae20cfd80b6cfd3e60dc179963ef2ea58da5ec074fd3d9e7a1e7ba97f"}, - {file = "numpy-2.0.1.tar.gz", hash = "sha256:485b87235796410c3519a699cfe1faab097e509e90ebb05dcd098db2ae87e7b3"}, -] - -[[package]] -name = "pyglet" -version = "2.0.17" -description = "pyglet is a cross-platform games and multimedia package." -optional = false -python-versions = ">=3.8" -files = [ - {file = "pyglet-2.0.17-py3-none-any.whl", hash = "sha256:c881615a5bf14455af36a0915fd9dad0069da904ab5e0ec19b4d6cdfcf1e84c2"}, - {file = "pyglet-2.0.17.tar.gz", hash = "sha256:50c533c1a7cafdccccf43041338ad921ae26866e9871b4f12bf608500632900a"}, -] - -[[package]] -name = "pyglm" -version = "2.7.1" -description = "OpenGL Mathematics library for Python" -optional = false -python-versions = "*" -files = [ - {file = "PyGLM-2.7.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:401ccf0ffe22c7513e4102f343e5d93f87c48fb869024b97135ee3a961c38c00"}, - {file = "PyGLM-2.7.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:48967e750329309e93d6b4eddea4b6be21bc195c5c9914b24909090b7dddc2b5"}, - {file = "PyGLM-2.7.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:311faffc2a05aa269dc0d212bf664e79a231357c8a88b95cb87312b84fe0f2cb"}, - {file = "PyGLM-2.7.1-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:5ae6a8dc299e77e96672c412715ceb7104d8cb162d9a6a0ae1e27699714b3202"}, - {file = "PyGLM-2.7.1-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1a06c90b43a259584e062666c8e28f5959043e09669c84c684fca8380cf4d68b"}, - {file = "PyGLM-2.7.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff79f9b92135e5a2c0f896ffe0878307ab8c05eb2ef90fc0b4d9a3b63bc03a6c"}, - {file = "PyGLM-2.7.1-cp310-cp310-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:87bf940e84d459d694ae23320a0362d2acadc317c032c54a69d761b0746a18dc"}, - {file = "PyGLM-2.7.1-cp310-cp310-manylinux_2_27_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5d7065d24c5ea85f9367d94c078399a656f643d056497f2866394077d345ec7e"}, - {file = "PyGLM-2.7.1-cp310-cp310-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:62a3615d97fc253785f246b84c23771fc1303a59a62e732bf70f144d189f63e5"}, - {file = "PyGLM-2.7.1-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:32071c21dce494aa02a37ea4236495fb2ad9110a104c14c6b45d9b5c366886c6"}, - {file = "PyGLM-2.7.1-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:8ead25748e90f98f925e8c2ea5ebc52f2cea184cbb12fa95bfa35b699a4f6f75"}, - {file = "PyGLM-2.7.1-cp310-cp310-musllinux_1_1_s390x.whl", hash = "sha256:6b59d847790a7a6ade9af59d4a42c75b411fbfb1994a2c51a699f94a2b2b70ee"}, - {file = "PyGLM-2.7.1-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:c5a8a9b74846118023f635f460a3d7498740996605eb25a875fe46c01e7ad23d"}, - {file = "PyGLM-2.7.1-cp310-cp310-win32.whl", hash = "sha256:82f96329235da787f0c3b30239a3b6da6c7c140ac1488b3142b363d870171fd0"}, - {file = "PyGLM-2.7.1-cp310-cp310-win_amd64.whl", hash = "sha256:bf3e062103a95a78930201df100156e6ac24eaa9bd50ed59442300ba8edf3173"}, - {file = "PyGLM-2.7.1-cp310-cp310-win_arm64.whl", hash = "sha256:4b07ab88d8108085e7998b17f72e246dc60ee195aa0967980a22a433e1c5693a"}, - {file = "PyGLM-2.7.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:64b6ceca09f7881eaa9299121b343e6569d4ef300f483903801ce2f3407859c3"}, - {file = "PyGLM-2.7.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:6833db36d6b2dc12e2a5a4dbc37f8e66c743235431af5b820f87ce35c7994052"}, - {file = "PyGLM-2.7.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:00ad243f7e4c0a89e1a8943446592653a8dc899cbbeeeb3e33221fb146eeda0d"}, - {file = "PyGLM-2.7.1-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:61f2eb79e17b2470e538070d3bdd81bac01399fb9065674e905636f7a0e3df57"}, - {file = "PyGLM-2.7.1-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:aee0a971df967677f6b761c1fd9515a2e35a4e85ba2ab147dd7bf887fb2ab026"}, - {file = "PyGLM-2.7.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dfd6a1a620eb6431034fee42ad9c6cb46633be47f271f993bd135b24953dbfd6"}, - {file = "PyGLM-2.7.1-cp311-cp311-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:1e258d812b68be1ff7699b55d6e66430cdd35af8c06e0774b5673bc6ed913eac"}, - {file = "PyGLM-2.7.1-cp311-cp311-manylinux_2_27_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5f804e9394befc35f2a2a2b2d3372288206538b9c75325c128441acd0a487104"}, - {file = "PyGLM-2.7.1-cp311-cp311-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:f4b34195081a6216aa6c85d56cbc6411e2d4cd6433664904bdb069b9bee18e1e"}, - {file = "PyGLM-2.7.1-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:60487a1b2db6307f92648e52cd5773fb3cf3d3f6112b56787e480e1109e18be9"}, - {file = "PyGLM-2.7.1-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:567b1664942d12fb45bbd54fcd2ab128882905de859da8cd8a866f1489ae7d48"}, - {file = "PyGLM-2.7.1-cp311-cp311-musllinux_1_1_s390x.whl", hash = "sha256:b10e46a573ce412f16fa14cca34dfca96c23e2ccf159e3202809d6e77f140758"}, - {file = "PyGLM-2.7.1-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:45427bc7fe0d164c4f5e71bcc8920e6ee8169c0d1526bc6c6274b2c21fbfe8ec"}, - {file = "PyGLM-2.7.1-cp311-cp311-win32.whl", hash = "sha256:583caf00a8afa07850ede7fc82547f72b532f6dfce9aed25648f655dae415f51"}, - {file = "PyGLM-2.7.1-cp311-cp311-win_amd64.whl", hash = "sha256:fd3e7c92ba74e76f992c6cfcbd662058c076329695713108ae54af233e6647d8"}, - {file = "PyGLM-2.7.1-cp311-cp311-win_arm64.whl", hash = "sha256:e22b4a83e0fb36f68a1d84cfd2a95d66d053d0cc5a8aab08bcd63eb7cca11d25"}, - {file = "PyGLM-2.7.1-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:4aa958556dd26e647c67c740aee2822bd41f05f6f2ce70c4f1268e7f0a93b108"}, - {file = "PyGLM-2.7.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:6bf06d63629a2f0f2a85c1fac778b334ee6864d1768ac469b31a30cafa596c24"}, - {file = "PyGLM-2.7.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:750109e5a2d788395766ea6465b96762b42d779c9cb430dd75c02c447eb0379d"}, - {file = "PyGLM-2.7.1-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:3486bc2183c78d5fba7f8e4a26c5093bb4df5110cd09f45e7416f3afab688f72"}, - {file = "PyGLM-2.7.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1f4f7d138826d95aaf32bb1414978acc6d839a09350a33c244b881c6e84bd9d5"}, - {file = "PyGLM-2.7.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2dd9c3c55a8070b2894b1b22bc96ed01832613f4ea984b5023b56a6b4cd6c1d1"}, - {file = "PyGLM-2.7.1-cp312-cp312-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:8fcc6ef1f3041618300313af8cd0ba4bb60758d083d7759b51ff6c709e935677"}, - {file = "PyGLM-2.7.1-cp312-cp312-manylinux_2_27_s390x.manylinux_2_28_s390x.whl", hash = "sha256:06b2d950e221178cc0832b5b78d91f13926d37b851bc4737f92bd5149482b487"}, - {file = "PyGLM-2.7.1-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:117ea85a40144720436f296c8f1eacb03c33d90fac3df5af086813d7a9e04881"}, - {file = "PyGLM-2.7.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:4c4190604c5af3f65981c4d51aff2681baaa1c185d9d380daeb0ba391199ddcb"}, - {file = "PyGLM-2.7.1-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:0f42987c0eedfe6a17131e59b72133f5465eda445fc6c3e4c90c7bafe2258914"}, - {file = "PyGLM-2.7.1-cp312-cp312-musllinux_1_1_s390x.whl", hash = "sha256:fc97b41cbb89e4135ec2abc2a1ed2fb6ee2c72eadd2e9f1dca2d9dcef90a47dc"}, - {file = "PyGLM-2.7.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:7e448d37621641fa12469ad6c19d05d7d70bd258cea334a18e2123063f6fd1ed"}, - {file = "PyGLM-2.7.1-cp312-cp312-win32.whl", hash = "sha256:f5488a46d1de944daaf043c209c149ddc59a4f1cced32ef5670062f1e0f3c813"}, - {file = "PyGLM-2.7.1-cp312-cp312-win_amd64.whl", hash = "sha256:890db36101cf945cc1470685ea8fed788291088cdfa425fcfdf701ee6adfd24f"}, - {file = "PyGLM-2.7.1-cp312-cp312-win_arm64.whl", hash = "sha256:9e9adc73094c2607841209c08f1dc61808630f2113f7cd58003a4904fe241e56"}, - {file = "PyGLM-2.7.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:5116c118f7f291ab6b19b7980f8c32be9fee9d88cf85ef1760651df3f14a2cb4"}, - {file = "PyGLM-2.7.1-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:0e2bc62c3308da7c3fb80da569d8482c17929e7e4f161c0520db7db8e1238162"}, - {file = "PyGLM-2.7.1-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:aa46162c9a427f7625880daf85d0bfc426792b3a5e465219967644391cfdbf82"}, - {file = "PyGLM-2.7.1-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:85b713430b30a1eac179b90f59dbccb82dccba1659eab7ff5d6db6d5a07c8b7c"}, - {file = "PyGLM-2.7.1-cp38-cp38-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:b34555f20024e5ab86ed8ec7236a8ffddd12521d3093d16fc5da1fc032bc7af7"}, - {file = "PyGLM-2.7.1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e391b2e7f5af43e5838bfbd1eb1d4ce13187248abc6fe462bef3f23044ef8845"}, - {file = "PyGLM-2.7.1-cp38-cp38-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:d87dbdc96a34e0a6f06dfccfdb012ab70249c049606cb01b1c51cd5262a0ff26"}, - {file = "PyGLM-2.7.1-cp38-cp38-manylinux_2_27_s390x.manylinux_2_28_s390x.whl", hash = "sha256:38d66b7150fd0bfe37f2d31dc67969b6c4145b3f2921ec115be3047f3350b015"}, - {file = "PyGLM-2.7.1-cp38-cp38-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:04ab4b5325cbd9515ab6fd0c1d1d1e9c4cfc62fe7ae5c816cc82e41c2ed5ad65"}, - {file = "PyGLM-2.7.1-cp38-cp38-musllinux_1_1_aarch64.whl", hash = "sha256:40b7a96e13c782be23140f05bc4e74599fa89922df533445a69e7a392365550a"}, - {file = "PyGLM-2.7.1-cp38-cp38-musllinux_1_1_i686.whl", hash = "sha256:4b1b3b469eeb4f988db25deae6b31ddf89cf67f7623e4a74793a4d6041832163"}, - {file = "PyGLM-2.7.1-cp38-cp38-musllinux_1_1_s390x.whl", hash = "sha256:ffd4c70ae50ec33592cc537aeb991230d5ff8dd00091dc880fb566be69776514"}, - {file = "PyGLM-2.7.1-cp38-cp38-musllinux_1_1_x86_64.whl", hash = "sha256:202964258049588469eb355bd1baeb0bffe5aa5d6fb34f4983ff465ec03a6156"}, - {file = "PyGLM-2.7.1-cp38-cp38-win32.whl", hash = "sha256:e6ef596e75df4dd233511a403725885443763d700a9b425408be62e1de980a75"}, - {file = "PyGLM-2.7.1-cp38-cp38-win_amd64.whl", hash = "sha256:1f8950d1d6d900bde0b966248ee604219a7760766bd13ab3892f80384d53633c"}, - {file = "PyGLM-2.7.1-cp39-cp39-macosx_10_9_x86_64.whl", hash = "sha256:d3ba1bbce59dee76afceff1342bc29c0bfced2a55baf024505187d5d162a2253"}, - {file = "PyGLM-2.7.1-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:19218d8f414c86dbf4c6b97bf8c040e2e4fd5885833fc3a5ac5e3a2a15d9afdc"}, - {file = "PyGLM-2.7.1-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:cf719550ac93107a6c9f75bb08f9baa5d7e846fb88222985e18c4611365d48ba"}, - {file = "PyGLM-2.7.1-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:33398e48bedd6e8f8945c7b7b0c82495927d0c5ed1964f2ca963b30b668d9275"}, - {file = "PyGLM-2.7.1-cp39-cp39-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:9d9f45eb2f1e8be53a8f52317014ebd12f61a8feffbefb413ab828323f3c0bd6"}, - {file = "PyGLM-2.7.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba24cd208fedb4d1cc3a49f52c84eebc30aaae67c9f094cee75765566451f19"}, - {file = "PyGLM-2.7.1-cp39-cp39-manylinux_2_27_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a2c36b9fffd80a25765e6917e3aecda7ab264bbfd5a8fad531c57d0c0403fda6"}, - {file = "PyGLM-2.7.1-cp39-cp39-manylinux_2_27_s390x.manylinux_2_28_s390x.whl", hash = "sha256:8dbe2abda1572796ce981eb468d91c9031813448c9e2e426e8567617ca77c3a6"}, - {file = "PyGLM-2.7.1-cp39-cp39-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a7253575ec5f269ee5f5e2960e5f0d5148e3e978a27ad7ecdb0b3fce22fb6f3a"}, - {file = "PyGLM-2.7.1-cp39-cp39-musllinux_1_1_aarch64.whl", hash = "sha256:6581986fa3908f3f7e8df8145f7e4dc52a285f0a589caf43cd40003304fe4048"}, - {file = "PyGLM-2.7.1-cp39-cp39-musllinux_1_1_i686.whl", hash = "sha256:5c70210bdd103314cb635647343afc48db66e1207cbb4e389f0fe75e5ca4ae82"}, - {file = "PyGLM-2.7.1-cp39-cp39-musllinux_1_1_s390x.whl", hash = "sha256:b6f75fe54190bba4d8b86a8fe0c1f4d71183c401fdc0c398129b25bc4c67a6d1"}, - {file = "PyGLM-2.7.1-cp39-cp39-musllinux_1_1_x86_64.whl", hash = "sha256:298ffdf5f7c638ff31ae74e547710485258de7fc2a819932b2df7cc8de5f8265"}, - {file = "PyGLM-2.7.1-cp39-cp39-win32.whl", hash = "sha256:303c301139c92853cd7b280431463af7c8e0d638f7d24d248c2aa19fd1316f06"}, - {file = "PyGLM-2.7.1-cp39-cp39-win_amd64.whl", hash = "sha256:d5b0ba4cf238f916b24e0bb6411469d1348f66165d7121d34231799eb74820b9"}, - {file = "PyGLM-2.7.1-cp39-cp39-win_arm64.whl", hash = "sha256:449bdb7cf05f675631254886ccc58691167ac869bae29303fb9f869fe8bb3c46"}, - {file = "PyGLM-2.7.1.tar.gz", hash = "sha256:455817299e431c9a95e75b0c6ef6007caf57ee12a89fbba660f3741dd4da8f88"}, -] - -[[package]] -name = "pyright" -version = "1.1.375" -description = "Command line wrapper for pyright" -optional = false -python-versions = ">=3.7" -files = [ - {file = "pyright-1.1.375-py3-none-any.whl", hash = "sha256:4c5e27eddeaee8b41cc3120736a1dda6ae120edf8523bb2446b6073a52f286e3"}, - {file = "pyright-1.1.375.tar.gz", hash = "sha256:7765557b0d6782b2fadabff455da2014476404c9e9214f49977a4e49dec19a0f"}, -] - -[package.dependencies] -nodeenv = ">=1.6.0" - -[package.extras] -all = ["twine (>=3.4.1)"] -dev = ["twine (>=3.4.1)"] - -[[package]] -name = "ruff" -version = "0.5.7" -description = "An extremely fast Python linter and code formatter, written in Rust." -optional = false -python-versions = ">=3.7" -files = [ - {file = "ruff-0.5.7-py3-none-linux_armv6l.whl", hash = "sha256:548992d342fc404ee2e15a242cdbea4f8e39a52f2e7752d0e4cbe88d2d2f416a"}, - {file = "ruff-0.5.7-py3-none-macosx_10_12_x86_64.whl", hash = "sha256:00cc8872331055ee017c4f1071a8a31ca0809ccc0657da1d154a1d2abac5c0be"}, - {file = "ruff-0.5.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:eaf3d86a1fdac1aec8a3417a63587d93f906c678bb9ed0b796da7b59c1114a1e"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a01c34400097b06cf8a6e61b35d6d456d5bd1ae6961542de18ec81eaf33b4cb8"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:fcc8054f1a717e2213500edaddcf1dbb0abad40d98e1bd9d0ad364f75c763eea"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:7f70284e73f36558ef51602254451e50dd6cc479f8b6f8413a95fcb5db4a55fc"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_ppc64.manylinux2014_ppc64.whl", hash = "sha256:a78ad870ae3c460394fc95437d43deb5c04b5c29297815a2a1de028903f19692"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:9ccd078c66a8e419475174bfe60a69adb36ce04f8d4e91b006f1329d5cd44bcf"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:7e31c9bad4ebf8fdb77b59cae75814440731060a09a0e0077d559a556453acbb"}, - {file = "ruff-0.5.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8d796327eed8e168164346b769dd9a27a70e0298d667b4ecee6877ce8095ec8e"}, - {file = "ruff-0.5.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:4a09ea2c3f7778cc635e7f6edf57d566a8ee8f485f3c4454db7771efb692c499"}, - {file = "ruff-0.5.7-py3-none-musllinux_1_2_armv7l.whl", hash = "sha256:a36d8dcf55b3a3bc353270d544fb170d75d2dff41eba5df57b4e0b67a95bb64e"}, - {file = "ruff-0.5.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:9369c218f789eefbd1b8d82a8cf25017b523ac47d96b2f531eba73770971c9e5"}, - {file = "ruff-0.5.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:b88ca3db7eb377eb24fb7c82840546fb7acef75af4a74bd36e9ceb37a890257e"}, - {file = "ruff-0.5.7-py3-none-win32.whl", hash = "sha256:33d61fc0e902198a3e55719f4be6b375b28f860b09c281e4bdbf783c0566576a"}, - {file = "ruff-0.5.7-py3-none-win_amd64.whl", hash = "sha256:083bbcbe6fadb93cd86709037acc510f86eed5a314203079df174c40bbbca6b3"}, - {file = "ruff-0.5.7-py3-none-win_arm64.whl", hash = "sha256:2dca26154ff9571995107221d0aeaad0e75a77b5a682d6236cf89a58c70b76f4"}, - {file = "ruff-0.5.7.tar.gz", hash = "sha256:8dfc0a458797f5d9fb622dd0efc52d796f23f0a1493a9527f4e49a550ae9a7e5"}, -] - -[metadata] -lock-version = "2.0" -python-versions = "^3.11" -content-hash = "5cff0dc29c85bdc8bd32558ecdf71c7b98c5e624a9ec738f6dbff8a19df13f38" diff --git a/community/poetry.toml b/community/poetry.toml deleted file mode 100644 index ab1033bd..00000000 --- a/community/poetry.toml +++ /dev/null @@ -1,2 +0,0 @@ -[virtualenvs] -in-project = true diff --git a/community/pyproject.toml b/community/pyproject.toml deleted file mode 100644 index b679a09c..00000000 --- a/community/pyproject.toml +++ /dev/null @@ -1,40 +0,0 @@ -[tool.poetry] -name = "mcpy" -version = "0.99.0" -description = "Minecraft clone written in Python" -authors = [ - "obiwac", - "Jukitsu", - "drakeerv", - "abrha2020-smart", - "StartForKiller", - "Chubercik", - "brennop", - "anthony-63", -] -readme = "README.md" - -[tool.poetry.dependencies] -python = "^3.11" -pyglet = "^2.0.16" -nbtlib = "^2.0.4" -base36 = "^0.1.1" -pyglm = "^2.7.1" - -[tool.poetry.group.dev.dependencies] -ruff = "^0.5.5" -pyright = "^1.1.374" - -[tool.pyright] -exclude = [".venv"] -venvPath = "." -venv = ".venv" - -# For some reason, pyright thinks '__setitem__' is not defined on 'pyglet.options' when it totally is. - -reportIndexIssue = false - -# From https://github.com/obiwac/python-minecraft-clone/pull/107: -# F405 * may be undefined, or defined from star imports: These are indeed defined from star imports. I guess we could import all the symbols in '__all__' explicitly, but if there's a mistake here and it causes a runtime error, that's not the end of the world. - -ignore = ["models/__init__.py"] diff --git a/community/save/0/0/c.0.0.dat b/community/save/0/0/c.0.0.dat deleted file mode 100644 index 8922125b76a3eae28e87970b6af50e1df8c114e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4660 zcmZuzdo)!2_nvW^5F?c2GQ296WRyy`cMef>@ebW6F-lQMN=ZcyDO5C6BDd*65>iR% z;*3j(CY7R64Kp+tnw#OwICDO~zW@K${^NQ6*y~w)uk}28ZOWAyGji5z?^6SzPR@U8 z|K5{?@gScgL0+?q>U-a#-_InN7|r>4+t}FpwxQoazY?u4iW)}VgFAZb*Et?pz-+yI zsd7;6@6d5SWas{*hcC*<3`WjdSwHahtNe30{YK2ilJjnk4(|e=Cgx4U;lGROr-q77 zsHD7AS6W00&h&3lfhga_rT2Qe&r?bD&zzT?PG)f`tRrSlZpidiYSo@shOg=xFBq(S z((iv1MMSC4(m4%A;Qp7xPX;T8L(e4jd-cXx?Ce{~+9XM)@>bJ26Q8~qM0YKT4ZBaH znOMw*G`E=L@~VreI%56&vLK?hUgG{GdEaqkRx;`mBMDqwr}pYA7(ew=?7n~c%m@6Y zHpBF)SkHx4&IOe_%Z*uYf0FNnR?K7MJv?hMNot)tk77=Epg3%MVc61xPZIZQwCCm5 z>@m|^9e<)TCiZp|WTJ)f3L>;v$v?>)<=~Eawq@TLwDH`ll-4-ci=~Y@|G={#aKHw= zYjZ(&yH!L(Iz?p!uTCiy!o3^?my!ldHGu##+0OP62QB`UE7^!by|WH&Cn*@cl=?Mw zGw`9xSL%B>U#wNlHI#K|m*!40274m3rPofU651rz#iI6wXaL!qEfBG&D^CDBy+dCp z_v=Z(xqjD1cmZmzvvLsY?Cj$@f+lhQjVK+)jZcWKm})zSMB{?UG}vBp#vXJ&GuUBU z!4zH}NEK522f+Re8~)}R*+1)f-4etXMXt-L%#ZEXRyRXojGd&;r+tBAd=CTDSv0d91>jw)-K)z{PnX-m=8%kVIa>YDM-47)1*;X7qBkJxgr{;khn>$PTJc?c3CUUBNO#!KD}cDgiQEWo=8Cz+5wMgHdJQ)D?6# zmf8+`54bi{9ammEXJ^xpJOPZ6%pW=0zN5ywv1e))=Z;s-`1g=+N+WnPcYO;eK|iH= zpvFR29o%<73MWrLbF-pD4-~P9KxRa-Zs_*J%?3e*EPH*D4cW6BtMa_~m=a)wMfAhB z!rkzndhxA|XXqTTNsU&R?1rz`j=La?GWkG}xC#r`b%7C_xko)4>}tSQ9AR7PMfl|a z&APJD=znFV>1WGNd)i?WSsIj=xX;XfI1^qq3kWSjeuE8YPWa3ZON!QQ?#~~9^`*$K z_@hl;hR&{q&{AHv6xNR4TiUqz)s^rNzhL66gnKu)$`E^yxx?+U&O7^s{Tq8&2NueZ z6KNl-z@2$p=qC>PfAE`;#FJ(FYCp3SbSo#N7s*5WH7>iC6U=Y~jQ2b2>^_5L&v;yC-{LJ+grMyE#uqWd1SO57IOx1$)3ihZ`?+Hd;J?~SU6kl0nHq01 zA1GW46KU_1(V7LzCO-0O`x?j{MTYTBm`CF9qS*w_@c?zD&GAH{_{+wPZD60TcL?#n zJlLWB{AXj(_KU=EwUi>^JfQU+9B^55W6qX^{e!4QR3fY=giRR&#=dyJ08p!Lw;s&b zb+buO$Epfqe8uuCw_k|y>_s6i;8XtzqJx_em_xP+=>_UF&>PlO1!GliS~JBHE;)Bi z45>Sj_NgdWajCZuqdxAD#v~1J`869$e#``Td=P>ZcEgXVHFR$a`pD?#mzDPW|~Y_TTWAPVAM#35R|6 z1*mC#iCvJ;jRjundLZUZvChnb-b0-^F3ptV)8rB%oC}{Qo&Oa!_#4p?jK#ZN0MFeH zm!ata@X6I*m;~>M)FwC17-U>^+nC;(C8?@|;_n+ctMF}R>{NZN6_22Or$`FcR(OBY zHX1A{i)D47WG^>&;W@t_hc{p7vcj&klE35>H`w64eE0;)Rw9W|K-f)hK)}k|+zNr; zI7#1azuMzrT)(>)tW?wbL|K5YGPIzX12?Q#78+08*7{XOZi**bHTq8nKh#XZ?d}C9 z!qxHSg}7ZPMHBeiU=%rA>f)_wjN5((c9tqfUTIC*&V%XOVKH%n6tNY)z)%ccpDKsv z!8p-#&63S;Ikv08?I5>q`uQ9g<#J*Zw(W&tz61$e3HKP#m=3oi6V^*u&6voz{QP0~ z2AKSUg_{CPhgTPSpo>_PCWzQ(e2F?SVZ%liD(SH)=9};gBR4A`oS?IT+9tO*0$300 zI*GRx0S)r)v!B%M3^C({34NW#Zbnm7X%)49Ge%JjFEfPi5fdj;ZxF0k!EZOOCKy2+7!8K8J9GkK+(s!wcyhWat-Jr;_-a$GyAp|3SicGP#i2X2t?`*)R~8u3 zNL+?jWXV|3)65p|7NfTDHoS+!%vp4G0@peXxf?A?vRCu|mK0^ocsWvhk)JX}nJ>S` zd-*cCt5dwO3ldMyBa|rSPeIW{-yArwX0}@{&=W7fqjGp&aUtnWBrCOF{wSiyHRe@kU($g!uIuNM3XJ8ZzQyF*Rck>BKW^1*>lwM>=obNN(72)nUa87nOQ_wJm(=MX zU}MZrl)bVw$pf~p>6fB-uzn$wX$yxc@15ps5I{TNr@#Lox#Db$JgJ~3^GP46XFn|* z(44uK1_D1*?r`>3Z4^P<2dcH?UL^#Xj#^0UA4>b3M{NC*)8uVs1m~ZM^aw-2u*E)n zcHs=hDiHD;7PP-hx4fQ(^&P6YjBc3MAx{;#T*H#RC8Tdcs+dXxnJQx5YIJzbv5&H; z4Ag#Sk;Sn>HE>%-78{{EaCwHp&k(Pgf!SlV#k7BT3@1Rmu)@2^DL4Ku5B5tKce+yh zP4nXU`Y@9L|f{ogc#aUAL?V$%t zaW5&u&TU!t_4)+m&3ABz(u_%!Ko=NqkYQQQHGJ>U5}bfi&fwPYqZP;6cGQb4F45D# zaRE6Rk8O0$L?U?bpp3Qq#{=l|$>Ph*tLKs{K~SY?tLEDC7~+>uOta!sw(7=Z6hRTP zrbEsnnC@&4^Kd99|L6G=`UjSzZGlhzqq((%P&DV3(UClXsPz;BEfxSxx`tb+OVDd0 zq6{j6gWhx2rMqjRSeJ&)6!(laNEU!-yv@k>MuJNf*dkU9l$OD9-3IsYM6_)_!_zim2A`ub8_AiSZ4$$Aup z9e5yV9!({&!MC)WHdMrkA)7+KO!r}@yPMxIYmaijwY(uezj%pKZq)pq@#nb8ciesE z2-_PC}a#aIWjE36D$??84Y1AVy`X|T}J1v}~tZ{~L4w?CrQVjU-ZqGw@`vqZp=%bgP@gwvwP?HD@rlWj1>?fc>RhM7?r*N!H2 zG9G6^V3{X?jYkk#Qi8!jaKIa^A4&ZH+j@P4q3=2~{c!$xgP$WRl<*ez_?jMh)`%`2Qo0q0Fni4Fx!)GI?(#V z{03pmj=||TPW=SRN00$&J9->lTmTYe`}h(M=cooV+RXkRyu;|}@$NDX2RiX*%q9G{ z`sQGkcJQgy;ZJ)D`-iYwF5%aD8%e8Wvci7WM2tAv$u7a+>0>tbW5mezzk->Lr!8L1 zdPSS_U1CIM&4ip|m7k9sX}g*l^{$Y%Y7ugLba-3!EeqDaiixq>@C9p5Z8;az*7|ku z+Z*9)(WBtqV=;X9u>_CDZ~2{zOsXExed^>cJNv%B%Ud3C??~(~_k^VI=?{4|el;1f zk(7Yy=iw^2V=`%ZL{G)8>M+jVuK%B`=;+}-ITynDUQ|;!d8{+AIxI2`M_hhLRn|G= z4F2WmtA!hSChfo!g#f%1QTYm&ItO!X=_72Q?f6hQ{oA3n9hNIUOI3wgQ?N0ZjQvgu z+M{R=ts7`oiWDZ9F2n2hE3}0zHlyHtM&X{Z#bHdf(~kp{rYroPxa`5ex3@<*8(!Q| zP=(}G3196)B5OHk(lEGP(kw-4vSeqb8q0cY?^!})@1CyEX^k}b-(usl`ZRkg#&^Ax zFYhD$kI26Hw9M;wHdNiVAVl<}9CZErAl?PacImk!?EJZQDZgDB+Ae)m*x2KXgETpJ z)+A%BDAIjeTWHv`p{)Y&#_adI{hO9f2~ew-eb8g4*&mB|Ch@Q;710JKENVmdadt;m z>&}aKd9=J;s{35G641-AnEXOH zo%(&Q+@L*wg2G7VzYE8lCY=}oN-@ILdxV)Drt&Joor)wQ^ey^Cf!DtlVrQ5t(&HsTQ<*>c7=AsR!zE? zl%3krq?-yoE(seEAsdbBFa~oo%slfv-|y+{Kj5sh)@QBPd#%ss{r=&-)`yX5Xn4Rw z8af3YaBy_^(IGta3}rOXl{df2H2+=DyY(^q$4cj}n(}Fm>BXK8MvL}wE!WZX>|Ivf zqeZ3BHw+mnjx}Dr=6w3e$APfPinfrGsfVIVjqZ7nJW@C_b;>tIDtZKKge-t57y!Zt7QkHu8YQzf)!QamXpLb_%8tm(4{_y+m zkSc*Us-xH6$G#3C7RY#)WuI_L<3~H_zQbFr2yTU*d*Bl%ozEXw5ScM3b30vB{|Agt z6P;Q;>19NTAVg+F)QEp0`daO`0(-#n9q$rInJ1*oY`CL3Q^CK|$4j7=YcvsffU|j8 zDCslI$P=ouvtM?6J$>t9}u-2?l#Kvo6wFWHyizfR)K5@yfE5rv2x z0?9E0NLoEIPixmI>i&$3sj;_7K&U@1GE+nGi{+&LHwB9gdg3Tk0LuYwl3*A}_k@k@ z-0BbPr-%zMpqq`rshW%d#!y@EwVzN233KL@(kF-qd0m{lK%Qg}n%Jtb{Dd4@9?~MJ z(cC_c*GJ!9@=@S6wssoG9#ct>f`-)OanTFF3I=8SVd-mq6^ZhI>J#>wKn8P_^knT| z2Y1^;m_IcCTE56cAhM7&jAcZbU0| zqH;Xd)?m(S_Y4WT5Y|@HC7Q>$(^ShE8+BDWFo|QfP-;M~n8UlK8As~^O>)irCt*o# z=YUzxSG-W1Hb|EU`N3f@kDhRF7dgs+<3HRCCsZFEY|F!L^jAe|@9u_+STJ|mwIgtm zIhIRZnhpMTghQ`ZD-@h@EWPY0)n@|p9t_c?yxf40?}}>a>&3{9LJz$03z0HPqB1M_ z#cwnQ?_3D1cMG@|rj~_(vUl)jJEhBz&}TL*T#VX~uTpb0v@58R<<1 zSG)aUx7ch5?O|i>BIJ!NR;{y(ocS-ifM?l-?6*=*03SI?s4Yq}iqY-GNqfijV>k2B zHv}mb9wQ!44Z)S|L!^rW7e;DI@Q$F^rTN$bQ2)?ALms~u*?4%}cJNs*uI?plQrIbx zT~L}gk)x$ipUG?Kxu9Xl$%A@GvqX*3fgX-Di(1WR2!U>``(T&o%2fBCVQA4MFz>B8 z*Xj^y)g6W(-JIB?IY860Qb@mCs{0U1=B5WieI@-*YM3Hs^_LQ0tYVv#?AXPviI01( zVu)q_4_%>D?o=fA8RyUA{wehtM@~@l`|z<+M=9J!DY~-iB{8r8?QTY^ucLLwTy@$p z-;MCcIuX6bdo#?x`||>0ecv&n;sKWC4Ou;+NG?j-ca>4+X4m+pf#JWBC{nI?gs%IE zGW{Ab3wRc$K+Btze<_QYv)Pxotr|OM^n8+uU$rXSvZ@~0QlN$xuqM%2n$0YjLsbV# zl>n=f$aWU(YJpwJ%o@h*Zf(;CISNZ{p!X3Nx(+5z4J9q}VBw5)R<(?aljwRGL!vFK z#oDWdSV$-3<`S;wpom3;!%fl#FVQk`RB7{B)nJ83^3O4HWayZhzYk4S77lzbzRT-S zInGkGsZ2Mj85KBt6s-|6o>dD*2!Tcd08)G9+xa69ubqpW1}CGVy*cMhNs;_L zY+OT`urJ-C_+1THbc~%CCqh4*L!ZE8Z2;+%MI5ySKt0#j$nbtF2t7>3%nP~VQvhze zjV>Y|O`NM7hAp;-g6x-SF6E!7QKRt%)y32thsAv?FW1an_rORqYS9)v!l88d!JTJF z!5z#P3BP&04IWo-l5j2y;z+jQ!3s=CJc}TcCdo@Z)C-ytztU4;#GI_Mz!6Pw1!pz~ z=@w6l833eqV$Xk-ILCMMzo4QS<9$NPZ3{}KR3z=m%Q}=evrniJtm)z^{5Qmr^y^_u zCK+3DB)cWDkqfkJY@su(NitEZS9#6Y+zQKaM4)#J7xkaX0Xx*eT!s}jOTpi>jABG` zvPv&tndvi^mC6&~^H--yK}mu^mdn1(VO~A(g2lSAr1-Vd!7f_*TVvm_wg;RqNpZmGjToo5?Fkq*$ZVwpgNX^<&@31&B_@GdAo%{Ni8v>5^Xg z!T*Z?W78u@;yMy=6*@Q>>sx2{it{>C^WoVaw9J`BHe7~Vo2mHeFtj}pG|ub@$T zz_P>`|G=qoT`Iq2fX3#{U$M>=i;dD%@dd%1L9GWg{cUXfJBhy}sEEp}!llbBrv2)f z?fXBGcq=wD6SfO`M+Cs;6R2shb>TW+vXJpOwxifvMg(MAML?W=azc<`W`*pq>0{lY z9VMz$VhSdtn{~3j5meJ~_!=1_@=lyP=p?l5tFlbjvd$2WRo2LTIks8Ha7rg+r#d1g zV2ns`@HfUxYs5yy6Y@4By6+*XN3qWn1~S;LGN`BW=6qL~s!K!aB+qoC*?X~)HzkIF z`f|t9kv1#WOff%vq!4B?;>6leL$(R5v_+M9b;Je|YxoN z^D9}$nI=q5oebqLs@fUx^}UNZke<+Edh~lh?@6)bHbU9-iR;AkFg=GQ0>($`Or2U&E5}BRE-PhgN-jIXOWQ7zpSoJ{!i!o`Es7GzYovv+w;(i=FUB+q3)dp z_pMvMZmsLOAL7#}%2;Lcko&*BtWJD0yE>qJ)o(l^YH?%LPSI?$w?272U&OBX&hFJa z!4&z{UtzA{(65`}v*zKH+SuGP2Q+?LS59BP5>~1by-p8|i+u5L#{xq;6rR@!89d-B4RNxuAeL)W%5H+?;p5 zx7Perl<|ZMw7DrigRgNy$!jvZ06n_-y`G@-3f0lI1|MJtE{;o1-~O9^)$kElxQW!3 zQ<^z&cY&KVT4gTcanGPf;v%qo)fnFLox@#=mxj@o)b-|Q*f-AWgQ+Jtg&?#3>vOqU z?l{~zoWBr@uB*O|Ik!xpukNATNa!|wqDOL%D1>BnQc@jV1O!jwHn{OXM zi;*|Ec#}*oO&Lcnu&@bOVkw|MDsr0u`KL%r<9surOCB`7`4+_VI^V;a&M;@?{Svd^=N$j9D_s_K z{j9c}od z*?S&hMJZ%uTCviV_RvtFL+71E67dmlw%nTHs(?SyDKEl-)A*YS7?v$(M3a&(RGFR^ z2sX*+A5u!I2KrxA%^+=klicrMwv-k^c#osv38Yo>0~?Bv8nSVM#W(-youQ=$b-qac zIs?!-cNSNWSsLH1A#>jM0r@Q$qvB?e{)f>U#&iskk#rdeSY*E`YaZ!^p8VgcA54$%{Zz5gqz|gcgS9U_TKR;g!^@|+5VP_x2((;1A z5-m@Ui??CZjqC zK3|Pb3pXH@%c@@qvzfosvp{= zjhrI}{)E!UIj|4zl_!iCh~DV}E-TQUu=c`IMqpOEM3`5DBXqQqJlckSqv9NJ$Gl7H z$Rz1lA9Cn5baLs2i;ZYn;g(e|ff&=rnCOn|4dFz44a`~Q@PQ|^XfWOJ5x{^+U*wQ`&m-5oV9=`9=px9w z9j<@_hQ2zLf45}eo&)SnX4kgDT!r^lS;&yaLwXj8xVTWu+ej{vF(lmHV&3lt-i7<} zrjIMuXi#I$O^mZa(XU7mpmFtTO`tmEIBBi&zX22R`@IV2i!WQ!&YD9hbi6+#pkI&& zNwPE^3afDCf?tY&#u(%be5=6Scw?cf+B#LcCx#4Tu0|X2E~ZgAK_l^tGTi(m>*pz0 zpK!tz1_lt*>Mm8{aSt*ySp*_6`cXMQRm=Y{+6!jX3I%KDc?LQ53hA@v=?v9H7q5jv z8P0P<8p*N8Ial%quEQs{I;??Rz$12l1V}gy+Qn!UE^0;Yf(s|ftjrriB)nczcA4h~ zo*AFnqrF)RCUDMa%Gc*4R+i5_puHA^;Ul=UlP0h#lQ`=K#_k}&H{rLKrR`VMjnICH zhF1&(w^QQiy)fLJU~KyPxu_g^v?2E(X9rVii`w*oV5^5OS+}*~UC=YOr_78Fub7W> zkPVe&goRUj_T2R!`jG^7w$rW+<1iWj#-y}#{JSv(8Q6H1N%yrSdq%vr?C}3N3xT!F@paqs}*z?9kR*o__uMuNle@gV>Mcjqwsa<4B2i zj5G`z0x|2xQD{R{_`t=~SI`{|g}3~mK4-&hLVg+cMKHWAFY$ z!^uL{1lY<)3Per0GrVpA7d9-C230$9&3#Q=l;F^4mvou=gA&X3kR;gfQCEk`9*zvu>Qh<=nACwulB#PwLO`up?`MpMeuG8%a#jIxG6_x%Q%ea_ zcjSf6c@G+|1P;fdPr$iJX!hKtmw2A!3O%fYdRiUK!;H2)><%*LjSe;F>RYv`{tuz4 zy-qppbKQF~;SXh%E@x85)z$I#CDXAP>w`3CX7b)`;ty+2vm_L73$ zK?!G+1M`R$l3VXBr4AsU0L{d@2^%;BV~{*I#J&$ya4@d0a@Cli#4J(t?w`v9f#>?V zGg3=)Q=fDk4Qo0tD{Iqs1QyHrAw@+}t@P(;7CKZcF2mhd4Jvh`T_t7z_G63jHL!j) zfBxc>^cB_#s*dbLUrAMKf^!#62oEe^sr&&Eug{9(ABJL7nGKJ^8NaUU%_K={t zxf!W(!grXq_H$9we{a*-zIsQ>|CjY^FJ-CgACzr8X4Sm;NXgR79Lg>i(&4Shyq0*T z)W-z3hS(#Nr5iU7^0O9nL5hjG2Nv~%_cXtwjT$*x@s_cZZ9Yhs>Q5>}&x!WfJtixC zym5NZte`exMRy+8=UC${jJvXi2$RtU;BzH!fE-Z5l9%L)Bc|wq=HHb_R0CoDKb@QX z&jolH_0`o1ssHNUX(1qulhVq_$P}2JosmlJ_OSxQl=RaMBEvC5F;`h#QvJ2lqTS-n P_&l$o!;=kuW|aQ`73(lS diff --git a/community/save/0/1p/c.0.-3.dat b/community/save/0/1p/c.0.-3.dat deleted file mode 100644 index d9392f71fb34bd7021d88c81ddbb9302ec6fe746..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2879 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 M29}!T`xKD>0)GBO0RR91 diff --git a/community/save/0/1q/c.0.-2.dat b/community/save/0/1q/c.0.-2.dat deleted file mode 100644 index a298fd6aa9623331cd2611aab10bf0c66fd62b20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3118 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 a`L5ZGGwbI{BD?w_spaQyI%+-0q<;fQyTK3u diff --git a/community/save/0/1r/c.0.-1.dat b/community/save/0/1r/c.0.-1.dat deleted file mode 100644 index c2d145674b8734ad376802e98e4968a93a21831c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5052 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 M?aRHA97xcA0a?evYybcN diff --git a/community/save/0/2/c.0.2.dat b/community/save/0/2/c.0.2.dat deleted file mode 100644 index 29d57ca6cb5daf8d0bdc0fd6aaa60bcb570859be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2456 zcmb7^X;)L{0)@lSfFeW?rGOZ0w1Qeda7H``MXeShT#HqPXwhP;7zULo>ID`&H* z`VS;BKpu4})gixsiD81~eNL{4>U$O?pU@_nD`v%KHk+r69ko#tkE3$bGbUMYnSg@U zJnAU|7oNrh-Rk(+c)#_jfg1I@@G0 z-6kJaf`xl?!a87@d#)_o2Zql@lN!hIbVv8@T-{&+(-3YIAv=~c;1MV(EG5cLnszL( z=z|J!NgY4Mm&9>=A)~H>UM!Z#5Q-z}o_+Ro!6Ungw92ZMTd3%?|rum6?27Q`2fGhgzqbPvK5}wPEI!dO0p-DGW$C zw*%XdV81dA=N0KSg@!>H)nUsNY%$(Bk*j7P$jj^&qx7QT^}4Hz)bMPQoSL_^v;}$o znBG?Lgt`-_`472bNQvkQXm1C$mh;8@(>Qa~z?5dE1@7Gza~xkf28kJY zqtsH%X)&04G${nIMolZPg3mQ&Og}<-pB>`O!*@p+d7xA6{M8v5bl%zre!>zg*p)Ca zqsOqqgp#D3mKI+@)e;rs9Cjz5&Y2%eJiaE|w=I}Gwm2PoaEL~%rxR-?*@%C5O$vcT zvNacx9{AR3gcYr&&`27FhZJg9(QyGqjnx?HZard>x@q>4lUGVFvqyC(8#6CwoOk;n zzPUD}6YZRGnP9IWKI?=b0sQ%}xD8glQG9G+=UQtXXdy^A^MUy=_HaNLcA{9=`2rU=M|nDi;*9!?if zlX8lUoLlZt?7--RKVenW@gY`BW;6JdJ^-xE6?&JOf=$T_m%Rju1>P>`I6p_6I0>Gm zpnPZOrn)yBTlPj@F6Bx{4{XR zXRKRtYN8K(Er)+A(C>+az&$76y2-BK`{Dw!t)|1sQ5C)A-qeC*-8z}Ox1Y3v^lk|?%|P;^fT?e4>v$_`4o%UY>jdl|SAoge4yxOEVg zsVkbqBRD;+{qR;kage%&CjF)Kw?} z0{cr8W!Hq#O)Ttmt_-QJH*RR!_chsi26eNn@9$gNBzE{<7+fexJ`U}JV5TuEgI=r- zwSRb>_9w-w+XPAh2a+50;1dDWvyw$)!3MeK3!#aTo-ZM1sNLd$HVDjLxE^xd{es@v zxFu&np;7o&IOo}irOX@P=sk{Bk1}%R38fRLIn`;@lxM{#)QN4iJgnUxxW7w%+PGtg}~vi!!ksJun-?wV2n7sB}e-22Kw6yg>(@M-~{r zgk866JpI)IC1cK;4Nf|q>$DvM_)I`qaaaz1L@%A5ac75Esf_fs7S1|Yct;rr!(`O% zR_ohA`B zD8k~T`MiYcUF`0W=&%(8hTJ~5!FZ}am7d*HOvayH_M zmO+O<`#a{D(ksczyQOt7ReOp-+T}6?e0*2@d~g%LZ$(mW`7lgwv@;_|#R=9ncc^!BW|~KYL+)ODV3fKaPfs3^ zwH;m_au5%Qn(zA>Em%|-pVhzbBNg^~ipm&R?-R+>=IKZtw6h0?B z_QRb#Fh=lz+1DK{-#Y6$0mD*K)+9ZzRVla$T=s}|gFxN!7uAE;Tr)2Ieiw#si(K}x zXNW@i(Qj}>w{O$N^Cf>Li8p?4C+?|E15E8Msd7vS3`hH7Djx`g3R3`^lG3v(42 z%!`3k&Z!o1)Fr4${T#ZAGMcIGBJ=xMBKE8LzBJ&*d)xB%zx_W}xTg8)x4I5~mTM!g zK7H3Wy3qyVYn#E-`UW#0QAi~GB?4cF@%GB;TxNX3XRKqEVUf=Nfb+*5pS1G&?!YdH zHN@A=aSr?BHsv|=p18dCUMGK0GG$mv`mWOJ|G)(9?ny+qpwDXgz2BO@f&@N2F{Ld_ rN8*&zdaiC)5G&t} diff --git a/community/save/0/3/c.0.3.dat b/community/save/0/3/c.0.3.dat deleted file mode 100644 index 266bf17c9f8f69a254cb3f8a49e8b73b9cb59afa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2299 zcmb7DdpK140v!<*$K+5rawhi_S8hf}B{}TrLCGt6P-3g8CMi?&5Qp9CR^k}1noi32 zj!zP2)R9J^JxU&-sSHzj>=VMFp}{bFX7AtccK^Kp-0$A?*IM7V*80{ziwc0sYH;X32(oOuR^5(QaS%D<%@$?REp zG>Co}nK&FYwIMNjdDkC~sTRIUllR`e9`Ac?J+l_QvN4S&*OwTphd)gZDOZ)e;Frh7 zUJKbTw`7a?y-$f+GQ#@kl)=4wBUr)iMUmoDVfT`r-C#hKcSJZPPm$K+)$#$`6I9PP zwjKosWAMQBC%xF_RNPrD3Q)ylk)g^5 zg?zrWrJN*xc~O3WdQv!)j~QuQpmmK>u^R51DbB!ZANekq4SWYv=6ui*zZq9>K|aGp zhMPmzG+e;5MJlH#WpS|XHdT$8e=L5kiDAR@w+a7NRWRqE0VCumiMET>Obb^nSk zgI2>>28FomWj4cYWayDeWEaDDqWm#wo+p!uMi{LsqV=i1SmpL~H{ob?u${0-IYm3Q zl{+a1gdNy8#V@%`{SJO^F2lD`&-XXIMOV}94Y%Q%Y}L-ZBGN+`-vYC6@yt{RjTFHP zjLcHtybzo6e1^!hjkyDEgONS5DsXEl_LgKGkfSpfg$fjYv-Kcdx`WJM(wH_L=LrDJVh3@V==AK-;!#TW5fAfb{P_opEZDEC&FeuWILy6aQ` z?<~ewC-!Oue%QE#TA)CVgJ#oXmtcQzt_eMUU9>hFtn2X-#OxRuZGOl8+MW&`tw8HG;s}lGRYUA9w(yhRn67{Lk z@Cg|UyXhlnHxYrHD9U)cDfYv>$sswqZ6^%Ub}bpkHp$*XqsEvJjk}s{PY4IxYCp$h z6AKNWs%D6@KhRNw%^#9-&;PL>=(i>_gdd(KAYCz>&R%OLM^J zeZVATQ~t^z^Qaf4u$ijS;v&7-{m_o#<5$k1{FeQ6UxK|Fam@p|OWuL-g#Y>`1nAL1 zxo8gU;7+@}dWRa#n_t$Ct%-J1j#pmqM7ES6Z0oOgC2jS~eiY*ZJ*oZH!pWKQTC|9D zc5ACPd^gM)Wu~jywKiu@(4WenQa?6AW)TI{Fvnq67xHvE=gN7L7=#ANE z(6Mv0-U9do8j&TGfR^p8(ic4Dq;r@OE} zg$W=y7nLPZwlUD*S}(I_!>l1T_rXCicH^!AXN=lpUWCV~BrED>-%p_JEcCqsh1EL7HO?0-kg*b`Byi*r8x3&?yV-v>tSiAjij6nBkk)Igm#f_rLtqfl@ z^7?Dc13qmnhYf0d6QkZeq|t&%7!pi-c0#UN@v`mR2=h&{a~*%*DBRfTzN-_s%~cAU zuz3pB)e(Gbb-|q}Hxa1jnyJahGomenET6{DFm1wtrqTvTSs@kDsl|dIn`wzq6Oq?S zz_{vB$&-~cq=G}De}ELtto>Xx@h)EZ1;lhwy{7{db*W8}@OEP7CGVp{m;ADZ%Ij5= zo^V5+G`OOd6^LipB>=V#Z1_0IJS9o;!Dl|+R8u??$br6Nl(zvUygW38o8jFvNT3#} zbTM0lMMwPP1QYZpTG818#4jECLYhifh6?Z`INDOmN~zg4a%LEZ8aKwf=ig69QfjI4 z4ZMHZa}XJ1f8Hw~;jfi2U~iJNRiz09P4=e`F13+3I1 zHnh=y7LyY8{oYwF5qTXId(}K4 rHSOxbSY05yV?^Ddo*reM4m};(72X4g5YMsN&=JIiHkDVc(_{P#T;2TZ diff --git a/community/save/1/0/c.1.0.dat b/community/save/1/0/c.1.0.dat deleted file mode 100644 index 74fb005233408a2cfd930dc860bc01f875f9df98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4931 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 diff --git a/community/save/1/1/c.1.1.dat b/community/save/1/1/c.1.1.dat deleted file mode 100644 index 20c7e221482219cb16fa590e20a37e89c5b1bdf6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2814 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 diff --git a/community/save/1/1q/c.1.-2.dat b/community/save/1/1q/c.1.-2.dat deleted file mode 100644 index d327beb8547ad3137359561cca5eaba62ed056c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3497 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 JH|z8${{<&0fx-X) diff --git a/community/save/1o/1/c.-4.1.dat b/community/save/1o/1/c.-4.1.dat deleted file mode 100644 index cb2288847b190dfe7cd585d9436bc2cc1faa451e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3195 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 diff --git a/community/save/1o/3/c.-4.3.dat b/community/save/1o/3/c.-4.3.dat deleted file mode 100644 index bde272ba9853c408fb038dc03f15ef9fa287283e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3046 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 diff --git a/community/save/1p/0/c.-3.0.dat b/community/save/1p/0/c.-3.0.dat deleted file mode 100644 index 549461daa46696c8ff6f7f207fcf31940ad95ac2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3549 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 T5LWdcR1jVk=E*7#sNnt&`UvAl diff --git a/community/save/1p/1/c.-3.1.dat b/community/save/1p/1/c.-3.1.dat deleted file mode 100644 index 074d25b77b4cc077147ac71da523d86d15af6046..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4020 zcmZXRd0b5U!^dY@RLJb1F-@VNh-*OmQg& zLrThWS}02?+O$rKrpc&jW}0cv%sJ=#^SqwFp4apK_w&c+^ZLB$S-O<}Wjx5`SYN$S zkZulVyK2mZyK@Y_e4!v>>BUD|=r@Y2m+VpPI*UcLy|Yu_g`&o@Ze;1WzIHjga$s&vE$2^Bben!iAKE9G#3gnv-;8v=TJ@)_ORpOS{83TcZz~)ggdeYm|<3P&UXJ z!izTe+}h+Y#hr5}=kC20#vHD;i*Mw;bo)}m`DMx>jTp;yZ!Tp4#) z2l4B_*MX+LDRFBxax_K@(YU)-Xi3ezlb?)OT?^JDzSMFoK;>U(LKYOPfwHH(SXONl zV&60=DVrIAmrnMMq|STCj#R&th39`~E-zed+iBKf#`a&Z9O;~SFah^{>C_@IdqJu{ z9mphgy2VoR@BCdzpms}P@hFqpdJY;5Z~EXav(tgBM)0!~gEGE9wcf182i%mL*j@-$ z#waGU9;ae9jhj{CA-nwZQx!kcDj9$nOx!P``;tYQq@&wx1p^JWoFRlt=u4th8D;Pf z&Suaqv5YEoLYbt)hZRKAYC~x zK*Kfls{eRBp&_co?>>jl!OMABC_~#rx)RaJE54pz;ktA!!WQI?^QDrWy!|Rp5f%^+ zJc(l~RUZ|{2!G@ID#pS$q~TXYv;AMrCDbfAMg@}r`fibAS_9ILKgSufQvWe%0y5j{FoA6MRGOToItS<{FWQ@&mdMeHa$S_Z{f#SJWBQmot$}av-Fti8y0YA zS-Q1u3wWSmyK3wBA8i z%w!c)yLj(kQU=?-F8#c5F)Et>J?Vss2hVImT$t=r=SmbXzenupu(fCwtD+t>E_~CUxFBP?{);e8eE^eEdOjRI0;FN6MR`6jO)O&8soa&UQcABAu#hrX%_0Br+2@rAxw8#m*y{yBRj1#pue|A1!oYcD_!E0Di73On#}vTFTXE=u&kdOl4& zA(KIfKfukvS#&k7oKSoZpUbiV5h(F5ehI&`bGC-u*{>Ci#pA2eCm^4|ua;BS0>Kd$ zW9s~aGpDpPMv?g`y?Cw%(l9bA3Fy%*+e?Tm$-?7WYmi<_w6I8Pp#o!Ern@OIb{isI zZ}LU8`G5%B8}U~N)!K8b(NV%#Ua|eiM*Py4ojYERb=4~SRPZD8#rj(($(x=zdJ#Ir zo$E-{9a!4XRP(m*?n&Uo1ffbtJH*CC8#%Oi;W*7K%Dzf&r6<`Qb`gE}!p0b1ZzLO}QnDED#&4$uoT|>u)7I z2HANmJMNBUlv3T6#I(apZ5Itxn3{8ubxV+YU+glWV`EH1#H&smiCiEZuj7oBUtbQs zSJZ#a1C(jR@9beZYeog^^{7gc6`6{4{yW|8SOfK{b$szcvV3=;%iK9!pefT)L%YCH z^3{B|_$c>*o0-x(N19CEFBUa#wKU>@t=?JiZuUXayzWOV^bY5WW_(xOIrUv-^W`?u z)M2xTSkrL*E;^BWOi!t4$B7)5`=`bc?viO;a@UEEt=8zSgKpqqZna0$Q*Rwpr0F$n z49$Y>4CcDD)G}{yH&DMKBzf30FAK%a3JC`MBH;P(x7-2TQ|*FRmYR1S-LX$sALU_# zT9jBs)W;O|oi<1zf8R4;dc6``Ik&*C6)Ksrhzx2vr5SvLd^pJVdMjrSZNgtmnVuko z#aGimTDFR7s~&)bh&ESb+yIT$@c(>kEu~?4y7wVp6`Zyg^l9vsZE&_|Z9;pd_(N7L zU`IZZSu9Qyyqo|R&OnpeSLc(nVdOF?zQ|gKw%>{}QQ<`kQdvZ9Q=)`6Ni4Yux6p2* z9jfAMv6&TVF8yiJtkCNkVNyq85Q@ zdt!}~Ws-7-0QBq3oq@)c0MCUVN%m;&(ettRRuL36H19FmEv*QkVBk^nlz|Z5_pO~9 z!lDjK7XE&MEcz#)m8T;LP7fxE^;eXc{v8Xlcqg39(BjJdlA+o(0Y7Fucj|N_dRheq zJ|VNLu78AsWRK9+wrUS3a_bf3_{DZrv43ILsaZ19ISWrBK}8Qb7nrAb^MLJ~KrrGh zG!6Cu8P5-x;G$4jws7?sejoKYc@kUJ!KsoM>&VufCzD4(O$y^TXg#pQD#_S(%X<2_ zKW1Fz<^VdBNl#b4FBq*oj(M+i_zbNZ`)&*t?MLnpsFyF=A++ zfd%%!7oVw^F^2@(3Kt!!QFVT7&XFgoKhKpN8~5LrR||#h(SF}S&v71zJEr?v20psY zev8q`Q|WtqQfze!{y~lq<>Krm6qh$?(X)|;U}HR%U|`qOa6<8E$N={uI+e-2lqF=- zXntV)7Ba-YdPqDc8?H1Gc={;!-A7id#Mde9rJ>TOj2j#`VD%5#_U?1r)9S{{3+1`C z;EOy_V3K9as#2nBV!GjqPj#FtV?1wU{yT9u>vt^31tyq#`px$lJRsO!tcK9&XSBjg z`*y40B;AOF#Pc6KgVH=$YoNS3e2y5dNXSjX9CP{|z{9eDoo;Wt1M7HOJuY*Cs-`D7 zJv35Pky7u&IY&aI za)-hu8l2LUp{FXaZ;p=_XvZ2U{f@qR_N>*6Z*!^Q8b51zXiNNF3ufQT zWxf{7Yv9EfGk#V4o%D@G7P-Y2h6|iyh2aSo3^r`&EO$&yc+TU7PxMzFBdX#Au}6m# zgnl?n*RDUyjl_D zPRb0e2QE~TNNUQa+N+up{zq0cFmH9GzFlAql@J@+EF1xaA_AF;C70aQ?e*WtS>34S zcyqP#N-d+dBy<0|*~wTw@4e$TwJq{Bc2y4y%w&waYc-^fqKrYprF--L!S~6Cls!mDa z184ppG(&^uii|#@Z)zFE^jHh2p1ooqppeMO^oxF~TJs`MWRlV|GOtGt*q(4Qy_0qp3g5$<>yHg|PH6Rxb22?>gw z^@8c?H`t-+n$AQzgsJcRlFloQS4apQw&F4J8U%xy{?;EBkDl%9b_fGHTwnS57w%Nb Fe*xG<&g}pI diff --git a/community/save/1p/1o/c.-3.-4.dat b/community/save/1p/1o/c.-3.-4.dat deleted file mode 100644 index c9a6d415e70b0954c901ac5c96125d776525e7ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3005 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 diff --git a/community/save/1p/1r/c.-3.-1.dat b/community/save/1p/1r/c.-3.-1.dat deleted file mode 100644 index 6c49de48119e5c61b5a57d1b145e6243925b1b30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3532 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 diff --git a/community/save/1p/2/c.-3.2.dat b/community/save/1p/2/c.-3.2.dat deleted file mode 100644 index d27fe8c0c85d458124e3797b322f6c4a143c25ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3275 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 diff --git a/community/save/1p/3/c.-3.3.dat b/community/save/1p/3/c.-3.3.dat deleted file mode 100644 index bec68c2c21fe2192f0d9e7eb446c79c64a66f70f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3179 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 O(rK8p)w$F|i}oM!?=FS_ diff --git a/community/save/1q/1/c.-2.1.dat b/community/save/1q/1/c.-2.1.dat deleted file mode 100644 index 1045f76a19978bca07bfbcd91224ad81d59b6936..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4691 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 G4(UIY0Bqp^ diff --git a/community/save/1q/1p/c.-2.-3.dat b/community/save/1q/1p/c.-2.-3.dat deleted file mode 100644 index 9f878ccc4a0730d7e616351f78a683bb8fc4485f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3224 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 diff --git a/community/save/1q/1q/c.-2.-2.dat b/community/save/1q/1q/c.-2.-2.dat deleted file mode 100644 index 61d07f6dfe840cdbd191c6e94f8aa72ac8e9de81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3462 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 diff --git a/community/save/1q/2/c.-2.2.dat b/community/save/1q/2/c.-2.2.dat deleted file mode 100644 index db26b75a2c00934f06c826680c7d23f116c886e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4194 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 NngYS{f{jeZe*kIL3km=L diff --git a/community/save/1r/0/c.-1.0.dat b/community/save/1r/0/c.-1.0.dat deleted file mode 100644 index 6e869d990b55487d65aacc7499a71706fbf1d4b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3403 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 diff --git a/community/save/1r/1/c.-1.1.dat b/community/save/1r/1/c.-1.1.dat deleted file mode 100644 index 9254e9ad0c29bbe70865ce403e6da24264e7b551..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3780 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 diff --git a/community/save/1r/1p/c.-1.-3.dat b/community/save/1r/1p/c.-1.-3.dat deleted file mode 100644 index e7456449de8f142fb620de60ca1f628a4e708e2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2670 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 diff --git a/community/save/1r/1r/c.-1.-1.dat b/community/save/1r/1r/c.-1.-1.dat deleted file mode 100644 index 83d36a09bc947385812f3540a7d61efdcde7d41d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3231 zcma)+`!`g3AIE20A|6fhp!+Cgl4?Y{9K$B3)R8k?JSi1ZPEjYO(g|^9k91NljZ!FO zba9-dMoB{2%B@@)av6*8MS<<&dz9*M?TXI~&${CB9J^L?TY@V~)1WvzSSZ}wmudw$J`$$sC z5!Qy(6?1NNS}0g`fn7xndV1IO6W<%2u{B@l_0H_x<;P|Rjl1;|Q!gw%P5Q%Of81>E zRyQ~2L+z6GLlSlVc^XH0cscLTWV>6(1cz8gPs(v%sCNCw%ICK!x%z^p5%E=z*hJ-h1IC)A4Q<{ED=y#?8^3ftzdNj(?%< z)K-m1kL9Z17sTdy@Lo?ip~*W5`n4ULP#WDQXv^$s6uNo(+*)Du`6~yidHKK`e9f<> zJk_}I@+>(!=p9~jtr!Hiw;}PA)AP^Ii3c@s*Of?hnY0C!nj=p5=X|`tDOIyc(CE$! z1Z#$F|7!hy7TDrOdWGh7A8V48JOsP3&-VG3vcP+BXmKwmeT@5W z#206d5hunea8fn@K0O&(icc46v?q@A$K~s-SMj4SfbDfu6TBuF?l&MAV~LnPib8?l z#r-x>bB9FEcKEsC#CVA~R1RMYIsl8qbXtlxE_7BSD?prx6L@C8C>k#=t8chU$|q#L zB;gxk!o(YPRBv#@IHQ9Hzacl0p`DYI+ySZ|PHCiX0!i8>J(k7uf#*l^YqHy3%zOwq zck};4-Vd&6wm4W{m=%c%y|dpKe)xC%0wAozcA7#Knp@R;e=>C!=qIe5pr;z2yD=}a z;bswt{*~|!Hkdt4J<$>L)E&r^p@B0guAHY=A-_85HEq%W&oB!WP(iYPUdKoH>oBaM z9|18V*yctgXW06MCY~3v$yiKDJ-v*y?6)72kct-sO;-L5Q{?Ea{`R2c71n#oU=GR` zK<@X6^TiWB%Al`P57IENmY<|kxV|CGF*pXW_ywHWs9a4|05;&-0e;cp8zo~)L5>Cd z%i@_uPN1@spiyk{waamDF&O_5pI(xuUyJ>PE0jC%gjn3W2iX4*m$}Ylbdr7W9=uy~ zGzI!tG&DiWAP<;oUMYEKzwi5s%7Sr99mI!RmNeJ#$-!lj;Ix8z*-8KE041G4k}-&# z*&EJX2iqi&X)Q;s&09fwtTeLL zw-I4V<>MB@b%k?yy2`sP=+BLs{Da(_CrH3oO`Q|uFce~??YjF`7%=~HLV^H9dkc4? zicKkylS(=Reo9nhre5ZiL!#@TP-|*y_S}WoRK$L`>)MR&0eWKWs>!^61@6#wCqh_M z)#@0NeH~Q3=ska%dlZT_*5gRQtimR`1U}mceS}{I)c1)_=x#kkN?o(31}KBI57MR_ zs=%m^z10}pOICUl{h|v*MmL8YGe9E2U`w!?irfgZ2Z4>eY#=+T4U-_G_wes+KVjx_ zFb)NtdJGphK`0){{0}(+D;`E(^nCb>+oaCRg#EX8oSTHMU|x3L3&T=t`}HhvoeR=Y z!fYFv#KEd+Fnxzah;b4h+;Z#VD5)C7_xLLlG=y)9mc9TLmJ%ago}guv{+rH&3Fe`w zg-N7Mt{KCDJq)0QQ*d@O~Z0$u|7Y6 z4e{S%iQR$X;jhR|rLZlCCR6C)SKdK0&bwrmqyefMiB83e`S2WdP?KUgr7w8G$9^9x zT(iHId{K$o;&yR&r>TChUEb>?4W|LS3;D%6m;>eudrP{7-Ms zhGr_OMnx~*L_8{qE~XUvsYGn5CAWT0v`hA;p+OPtHDlo?EN|iqboDWCdx&KLqt3;sa;w4qNtun61#+RBL-`_oKQgQ!P6m>dnwy{e$yL@P3-9>|U%Hr>O7q?$x@5}bp zpoiZz>>+NjE;4V=D}*of8zn-<#Ul!PFEXdOk;|0S*_G)&z^NcJROc49qSEKm3@r6H ziPg*->CuIaySI)K2MA z_iKH<^w+DYg~x`;zPM2;$kE($FPPUY9D1=|o8_#YphoDP%qyYw!V9Od_(wRADQaNa z=x90tMbOkS2yNW4Iuc!U-h}(N=l^v7|G4O?zj%k_pjZN#R8}HA60ux$uH&5GkaSE{ zzMx>{WJZiwlH`g9A|eTu(b;;jt3?>`mgnr78GW)uDwfQY+A0@wV0kWrt46bo*mpAt zoS7Yny=%)T6D(vrTWdDSJNvREBSwdR{CIu?x|E)?_{I-+h`03l3NXMLiP%*(3z4}_G-;+zH9&Dc*=zSc ztaSo&jC9;otn{9>JUW=Q=;(yGE*vUiPJ=Az0$K(`DlmH+iAS ztwl6W8#WZfpT}!W0~O;HY{eb>&{nrB-eMg4a$sP+L|0Ry;0&svuJBfB`0I#g*v1sj zn$XsYl5mNMYCS)naH#N21Dxh3tJ_N pT#k*XPUX0ZV?RswNEEi~R>BX{A?0J~Q5Taw5OOd{{Cq2!^k0{R0KWhL diff --git a/community/save/1r/2/c.-1.2.dat b/community/save/1r/2/c.-1.2.dat deleted file mode 100644 index 7db9d2f12153e07d275e545eb3411c482d8481c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3575 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 diff --git a/community/save/2/1/c.2.1.dat b/community/save/2/1/c.2.1.dat deleted file mode 100644 index 380981817fe10ac268f9aee20caabdf429bb7c71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3342 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 JQ13&5{tlqQOez2X diff --git a/community/save/2/1o/c.2.-4.dat b/community/save/2/1o/c.2.-4.dat deleted file mode 100644 index ec2b75f516c4cce3a4043fdbacff9bbd8aa4fbf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3534 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 diff --git a/community/save/2/1p/c.2.-3.dat b/community/save/2/1p/c.2.-3.dat deleted file mode 100644 index be2bfc66460c29d47397d882d9eb0e5b6632da5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3219 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 diff --git a/community/save/3/0/c.3.0.dat b/community/save/3/0/c.3.0.dat deleted file mode 100644 index 5d50c0871d19360b22ae399915a829a65c583ebd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3648 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 PfVE;L`O}LHW`zF&3xPpn diff --git a/community/save/3/1/c.3.1.dat b/community/save/3/1/c.3.1.dat deleted file mode 100644 index bc472fc38a51e7b3cd59dffa8208bb27dbea3c21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4240 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 diff --git a/community/save/3/1o/c.3.-4.dat b/community/save/3/1o/c.3.-4.dat deleted file mode 100644 index 0b093de842e863b3de2627802899c85ae05b4d83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4104 zcmaKsc{G%L^uT9Kku*svQW+{*l%Yh~9<(SGTGcB}O0vXImTdEkC`oUlHC^Zogq-~YdRzUSQKeDCL;d+t4#k}{9*e=_bBbnDcy z<@Ogu6Mel;f-k7-H6XkEalYoao;(wu_JrXO*_CA!tD9iF<^4{ZiHPFPRZA9Sm8Y+V z&9t-)(adz??5Z>IbM}o{F575$vno9^(_Fqr%i?V!E!+Ev&Gb`cxV@lky1rq%NSb#! za;UT^s%eKPs&BeyYs&_w+?o@miov1JJNJk_1&2lj1&wn}m-8*TALzjkQ`c05dv!VH zll0C+KQcaKss_7pwRoW!TK{O-$7R5e1dtp zVv73T_jgi$W2fV{!_t&3Ab{ada==8!qO>8+f_pegkGC1}?-&xavz<`ZfSXHJ>{c6y zJQGfKw_4Z%j7SU| zBPyVkU>EM43qB50mWIKw-0C5G^u=SBec};GHLbn8hoEO(OAd#1jau|IMDN8m`n16X9#=S zxf^j?nN^(IL;Ua?r5VV7d^~gC2JXBN&|>1?0?*F5pZ)3FU*Np#-d?8kCGg7u!j{{Y z$a`f@Lvky1`t6kAaD~TdvU0$Im6ye|-z6Ck zcVWmga>yNJo5KG+(R9FS4i5xt97ZUf%dE%eEwkRQ1dhPD`0+pl^B5||Kr4COm${j9 z+T_l!;f4DN7bSr*zIP1=ANK-52>t zsgibw6JeoUgi-ik@F&}i$M%9_=_*+A)bFF{N(V&HqBeiYWS)$_3=Sck!Pp;(<&$?) zK@NT$p}v4f0X!UHy~ppLyLY^-QTq_8A%hwyk8yWQJy`p(&)wQ!tr52!xT!n%I3rMO zyGJnt!>+tE;IDF?wEh+TJ9uAoEmW~*=s7ghdEpiDV>?{h>=}axcEYcx_tZhLn8&1v z@vi0H=!L*d=086Zm(vYepl;M0o8DJ3XKgM>^wS|S@h!j(eb%6cCLyydmNT~1q!|8aPmLzFz=5YR)?ESy^g+KdS=MIMz6CE&}5o(q5QzLIG9mj&Cg@YDA{u}4?hs-)+QE90k($@f zx535L^FxAf&qdR=S*XC=01Qu(>0!6>-E7-hD5mpoy();(UjN z>Ni}#=jjI5tcof25h0DPP)nm7V`?X$2@+Bp?HDEm=Qt$mN-E!TQc=P-xy3KSAK&9| zWTfM@6vCI0aAbC;H(;XgiE2>4%o-S?Pr+>(FuoMDCu2xZMb|4N_6s@MVvR}7N5RZ1 zyXzZ8NZVV~WPl}|U$!#!4N<>DjD}KcPTUh ztzMbv&y%XP1H>y6ByVChBNW*UDMWDCCV+0#&Y#D?U!Ad9zB!D@Nfj#lpohg^im`z*h1&v3TGvdNHme7UaX$*ir!{t{Yg@L7DPA z@z)4lh_8xMnewD>jIlf=@#|as9j^0glRbCm0X>2(?6pyX=1|cwfrrak#@Ahdh^Ara zi=(g{EktapMPfO$Efo^uaIx}<1+44)L$xqt=_hdbY(M`o{`H724{Z^0X0KC{p#x^s z042t`U*E*UCG}kpuNWv zWi+OMlZIMubssA88`PL7>Gfgp-%Z_zLsfpAXaf_di8*nx#2I;stg@)VBlDMN^Oit= zhjlE2$e3WjBLp?2<7U|6VYrpN7^5a>j%hT5OFo2JU}B+AYP|9GWxs7vtgV4^0C4Yc zQSZ2#QA)Jf&fJ76)U~JU&g*hvolw8!-$^zOQD|klJqwF0*S~nnUNJY>R^F7yQJ-R# zQ0A%B3z}#kya}oxOe^X>Dmk5u#hksinRwl@(|MYR$VJ8%`hK0los;ZSp_9(qZ3G*{ z(}KIAU&nIwfCo{A8WjLzG?~_S6>)opK8pmu(ctv>Ybzz*#v3F21b2U-jxHdk5jxYv zJ*jH^>CJLG6fGGOaBg)NlHGGD=2^|y0!uM^=-<`&V4d0OrQAjH`aRh2-_muTj3CUa zKkvSjvYD%DIms>)zninSeCOCGcMsz=1e^cXl<`&J(Tc*;}mPC7@| z!2olp=Xw`YV{vkcof&?!$m0XFND6-+*I;uigP~uNm!pJq`I#!W=BaBWKgEY7 zNtxPt5fV#ggJ;oa7-5!68dr-&n;9R*lkD+X>%0E=`H^(>$JS=HVT zl3E7~s(w!NmYk!97euu8i^5HXlDg>LlG~-V1(h!w<)(Oa=ZIE z^`)A+9oM?yt!lxT&w^8D<2}0KnRV;I4e#oJHxdmNtZS!Y-b(l?^8C{EjIm}>r}?mi z<*;BYPZ3itNtrc$)GTn1c!|gR*?;xAVOUZTC0^He!4<6Rx`d_cOJLLD*)XYJr-mC4 z9i|sQ1J98u!kY!Ob~9XS=YkLgIRo%!624Ny6y-C{3(RDTDwW>9bWS0OvR?}$Z}9>WyUoN)l`T?3xoalLXl41}zTWF=!eyF# z``IB(x9od6QQa0R9laLuvNymqQnS9bV{v>s3jvImCVTUr+F+u|UM?l69-s%K&Uz(=IGAb#xgY@flZyzXKg% zP4kwsgDi)-)oORF@ww#uuG#*|IiY)tO#u{rFfjjPk)`9Fzm&-(arvFLJ*V^x8{66z zW4cD#F**^ZoBPTN*|$@ZJG&orm3ie!+Nnh=PG2si_xznXsCDUMZk$4`O!_16V$Rd?-i?cs@vUNh1SzZA$_U3EZOgq=g!gbs$ zYI?wiQ+E1^dPdi~k(u-KCvQZpMdz%zG*N5vV@6bS?*l&28EQ?Y*h;^BDrV0-Z_E!$ zqU{jIc~;(e!JX{N_w2Lr9c`UyNJ$C~+7?53zFCdarhGqn?^#paWEH3Sxc+BheItb} z{rOOhU)JC8pt1B|f6LhQ7K(n!ML1ll(6sB3`%5FC;tzuP=h(s9d%D<$*%4`6u#UvG zm&rXXP1_f~`iyXX3~Au#CQpqc_6--~MjAf2m3ZjS$X2l7|Ew=JX+*NIfrocX>@Rf( zIoq0UWg7>l2R2%Dr)b#4$kFrtEMe*Vj7;aNI_2D>W`~dXyl)HE*OPSZrsnuujLFj) zZwy<`Z{FUz{rds((9_XpEOx0hV^sbQpVO;s)LsEgCPr!`Z_-|t_bSwD8_J*YKmVAn z?~Km;h~u(oytM$>Mjsq;S?0d=!RIRjKlWSUd$uY9v~@D3i(gXmPt(Xd$c$;mGc(Wge17fs-{1M`yxxDDbN+dsL(4KW++{IwTn7Z% zIoPdrunRsOOPV?w9x=)@`)YBbHqDjbx2b+FB z`=@mWoo3_NL5@z-k2Y86GzFtSR(%kZ7JdA-A7AfjmpIg2p^?5GeGxFJuN@uz8p)&@ zITK@_n{4_)&J{hWdaG@GFne&PX?x*=r+QK^7p#4tb~w$;wS zc-B2|VWGRRMZssFlBbHP0<(;lq(YIi!&FscZ^YIkTRluzC; zJFerq2E+)^>MW=?85PnA5A$_8pF%-*3-aP|oR%MjmSRASA~1TMpwC%?cda8OC=NKT zE^>Z8_x;wla2kDYC~GmGkw-ZD+c9nhRFiy2gr@E$XH*bxtOo{bfZ=ltj>czq%h-veHC0h#2M)KfAhh0~&E(wsdCz8=Fka`&HrB!uNUnqA373;OoVoe(4fA29$ znwC=MpkpJ91C;Vg5%{=;v=e{$C`lUeNBEA$iD_>M?PvVK%=A;#gnY}P-b${%0c>uM zISd~j2Zl4)J|?SkHOb=mE?~%NT%U20Gn2pf|#Z#5}_PEYQFsu6%>1 zhRsM|-fRns7%qSf4MDZbcJI&ALa?aCU%--dg8N(Er^(_M5QVab`W+t!jHxaSiR zi9eayT=~tv6MRzpk8~j|c5Y^R$QZ*AP-MUa7<7Y%3E_O;^SS&HrSo(W?soUITPj_S z=mu^ntb241Cxykd*RmS ze>2VlCxI?CX#ho%4`BY57!NE$5%)bCu&kfl#Bg;ODP$l&6IS1X`&?UmK zG7$Z>5r`=T-sk7x?01id>j&T1tpf@(FtO0u&ol8U`J22rjyUxf8Z>^PH$u)3DX3cM z?8o~=NG6Fzv3~wF^)?t}@Mc`VhjB}_qhKRuUI@fJFjEYf7J${nkjv{iu*;`pQ>^m_ zHUR;aFPJvC>MqBH&|Wzl!t-B5Hb!8wlf(~2R$4O%Y8%qL2$ng?otUkmJdLiW$Pvrs z4TE@%DduPnV*IhzBk`C1f)^0zaWR#zpkEP~!S9rz;fW57j&dk~gnxl;f%6`kB`gag zKC5Pz5$lX8BA|a2yiZNy(e}#51jvtWKuRFlAjSpgj`%DAF(jb-35i$|FcNTKD}SZQ zac^Qw(M$W~3TPQ-Dk;B`_59$-JJ2=RJwxBsNwP|8I-7PC{L}5oB+~A|QLeD_LQtDe zmib|kVH=ipZ6uLcaM@|-4`vUY|I$Jz2)h21{~MpPX3s3n(5WN176GEulBPt#5+B8HhOooa*5_aKB7BMmxXS z_%TsJA-zKGEw*0W-n6Juh}5XyyR!S!&`zQ7TnNF`VlT_(>6I`ml80_ps9G-HmYE2P zzs-W?m!Jw?{M70fD{Lv#kcFEZ))N2d2$vJLT9Z5*(V&z_F>)18-{q%*_7M*6gXAdh+gmf*@8EkJH;l?f z4$6vq=b18Q)kjIdV{Cfmnl*%MZuw6N6CQH1v?+82)}i$c0Nn3Gv6hBJ>jHv(8PwSO z-+!e$4{fF*zMA{<&@Oq#z8-b)QPOBOEd`WK)Bk(E=UJO`tLGS~rzcq!(GLeaxD1KZ z%uZm;gB{vv->don_P&+oCzt${dJVisd!{4z>sz|Ejq!#oqlhMyc@1^J$DwCs!ys6c zWG@uHZKdh@Ze%TOh`uZlKG~OhVtUG4w35C8dw3UlF>-9O4>AVQ5o$;?l?QOlRu1F% z_H{rkpc%_>6f(L232k)uw}iKSg>d&GfP*qM!D#`o{(2U5dEHdsz`+oW3Cup%#iQx@f}CEe#mZDV$`qjyL6voj2oMvJHWZoos8wiljp^_B;{U|K#z}U zhtmbfgubQE>upYlDrdH8@%!gUDqVQa+g1g)@}R1w%hl2(A8Z_>9uczxFyXTWKU~>L zu*V?&Nz?Jjok=Cr)G}&8xM7JAq(aH4e*(#+8p$;;z@c`qMc(owRHCIH=|+yB`bD6y zg~@eYppRnd2Etgq65+Q7?W!on*k#4SU8oIEkiH3dkR2ATNf8P7f8J~5qgeg?LvAq1{< ztXX!h76OvY$K1i#|DJ35lw=br+A=-=5!Xup3&ctE(wzC$DH(uSz%LN@d6r!dx5L+P z{$nsd9Gr*+kB`0p)>`NtdR(rexe)&mkI{ocFqr#9`1gcZOl4t>C4{@mM^)#m_2g5H z8K6*O-aXh$wOfS*Xc;WbEP?pf#%v0RaEb*KhNn+*q?Gh2$n-F0GH((TD5)%b9HUC8 zg+3}D%_!7PbP!&gk%co5MA0rhrL3!y29b(ur>(@3vqDx(bo9rUUbe->TH32u-ahGl zd3O}m!^%6I-Ka(*X;Z5YEmzVbBP!^OW2f>N@lZp;g&2iYD*0T0eTW*lIsunP@9Ril zUWkc1<9C$9X^5!ca_#5_eel@>pt5fJ`3u$B;Rnwp6T76HyN*|%6NtsdUA-k)Ew~ zrTU8z)A9atpX$M%YVds;pQ>?`7LG{XOyx~-f;&`f@1)KxMdWR-gmO9b0Wyl9;2DFB zkCloH70nqg&_G7v}a^rqO1z6 zsQ~D;a?2C2J?@$LPGGBL&!Gh&Cw_8+vO+tdK}Wzh|HEy@oI(Qmc|Bqf@?k=UR9fYr5ZN1@hO~bKPvKM}ZcJ92nCI$Ofz~f(;{~@!w z-ct%zed;lf$7Z|5=~CpEpDVt;0ECLD>lSMf*YCj^BtNUN%CzZq!o=BF5DU-VuZXJX T4}BQUBdFSzqAgF|$)x`S*>%+* diff --git a/community/save/3/1q/c.3.-2.dat b/community/save/3/1q/c.3.-2.dat deleted file mode 100644 index 3d08b972d79e9a5d981a0dcac6b29fe3b31a8e05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3027 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 TXKl|$J*~5K>FlZvlPLcOfZnJ< diff --git a/community/save/3/1r/c.3.-1.dat b/community/save/3/1r/c.3.-1.dat deleted file mode 100644 index 6f69f1d868986d61f937fdc027fa7239647c95be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2784 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 diff --git a/community/save/3/2/c.3.2.dat b/community/save/3/2/c.3.2.dat deleted file mode 100644 index 02f4acb609731b77554bab9683b0b8c0d01272f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3168 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 diff --git a/community/save/3/3/c.3.3.dat b/community/save/3/3/c.3.3.dat deleted file mode 100644 index 159e18cd6d85bb8b18a367916b2174513d701e68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2758 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 Kae1`Dgz+zYu@@Eq diff --git a/community/shaders/alpha_lighting/frag.glsl b/community/shaders/alpha_lighting/frag.glsl deleted file mode 100644 index c0b1e22a..00000000 --- a/community/shaders/alpha_lighting/frag.glsl +++ /dev/null @@ -1,20 +0,0 @@ -#version 330 - -out vec4 fragColor; - -uniform sampler2DArray u_TextureArraySampler; - -in vec3 v_Position; -in vec3 v_TexCoords; -in float v_Light; - - -void main(void) { - vec4 textureColor = texture(u_TextureArraySampler, v_TexCoords); - - if (textureColor.a <= 0.5) { // discard if texel's alpha component is 0 (texel is transparent) - discard; - } - - fragColor = textureColor * vec4(v_Light, v_Light, v_Light, 1.0); -} \ No newline at end of file diff --git a/community/shaders/alpha_lighting/vert.glsl b/community/shaders/alpha_lighting/vert.glsl deleted file mode 100644 index 3ef39e84..00000000 --- a/community/shaders/alpha_lighting/vert.glsl +++ /dev/null @@ -1,41 +0,0 @@ -#version 330 - -#define CHUNK_WIDTH 16 -#define CHUNK_LENGTH 16 - -uniform ivec2 u_ChunkPosition; -uniform mat4 u_MVPMatrix; -uniform float u_Daylight; - -layout(location = 0) in vec3 a_LocalPosition; -layout(location = 1) in float a_TextureFetcher; -layout(location = 2) in float a_Shading; -layout(location = 3) in float a_Light; -layout(location = 4) in float a_Skylight; - -out vec3 v_Position; -out vec3 v_TexCoords; -out float v_Light; - -const vec2 texture_UV[4] = vec2[4]( - vec2(0.0, 1.0), - vec2(0.0, 0.0), - vec2(1.0, 0.0), - vec2(1.0, 1.0) -); - -void main(void) { - v_Position = vec3(u_ChunkPosition.x * CHUNK_WIDTH + a_LocalPosition.x, - a_LocalPosition.y, - u_ChunkPosition.y * CHUNK_LENGTH + a_LocalPosition.z); - v_TexCoords = vec3(texture_UV[int(a_TextureFetcher) & 3], int(a_TextureFetcher) >> 2); - - float blocklightMultiplier = pow(0.8, 15.0 - a_Light); - float skylightMultiplier = pow(0.8, 15.0 - a_Skylight * u_Daylight); - - - - v_Light = max(blocklightMultiplier, skylightMultiplier) * a_Shading; - - gl_Position = u_MVPMatrix * vec4(v_Position, 1.0); -} \ No newline at end of file diff --git a/community/shaders/colored_lighting/frag.glsl b/community/shaders/colored_lighting/frag.glsl deleted file mode 100644 index 4268bcf1..00000000 --- a/community/shaders/colored_lighting/frag.glsl +++ /dev/null @@ -1,21 +0,0 @@ -#version 330 - -out vec4 fragColor; - -uniform sampler2DArray u_TextureArraySampler; - -in vec3 v_Position; -in vec3 v_TexCoords; -in vec3 v_Light; - - -void main(void) { - vec4 textureColor = texture(u_TextureArraySampler, v_TexCoords); - - if (textureColor.a <= 0.5) { // discard if texel's alpha component is 0 (texel is transparent) - discard; - } - - - fragColor = textureColor * vec4(v_Light, 1.0); -} \ No newline at end of file diff --git a/community/shaders/colored_lighting/vert.glsl b/community/shaders/colored_lighting/vert.glsl deleted file mode 100644 index 25a4581d..00000000 --- a/community/shaders/colored_lighting/vert.glsl +++ /dev/null @@ -1,43 +0,0 @@ -#version 330 - -#define CHUNK_WIDTH 16 -#define CHUNK_LENGTH 16 - -uniform ivec2 u_ChunkPosition; -uniform mat4 u_MVPMatrix; -uniform float u_Daylight; - -layout(location = 0) in vec3 a_LocalPosition; -layout(location = 1) in float a_TextureFetcher; -layout(location = 2) in float a_Shading; -layout(location = 3) in float a_Light; -layout(location = 4) in float a_Skylight; - -out vec3 v_Position; -out vec3 v_TexCoords; -out vec3 v_Light; - -const vec2 texture_UV[4] = vec2[4]( - vec2(0.0, 1.0), - vec2(0.0, 0.0), - vec2(1.0, 0.0), - vec2(1.0, 1.0) -); - -void main(void) { - v_Position = vec3(u_ChunkPosition.x * CHUNK_WIDTH + a_LocalPosition.x, - a_LocalPosition.y, - u_ChunkPosition.y * CHUNK_LENGTH + a_LocalPosition.z); - v_TexCoords = vec3(texture_UV[int(a_TextureFetcher) & 3], int(a_TextureFetcher) >> 2); - - float blocklightMultiplier = pow(0.8, 15.0 - a_Light); - float skylightMultiplier = pow(0.8, 15.0 - a_Skylight); - - v_Light = vec3( - clamp(blocklightMultiplier * 1.5, skylightMultiplier * u_Daylight, 1.0), - clamp(blocklightMultiplier * 1.25, skylightMultiplier * u_Daylight, 1.0), - clamp(skylightMultiplier * (2.0 - pow(u_Daylight, 2)), blocklightMultiplier, 1.0) - ) * a_Shading; - - gl_Position = u_MVPMatrix * vec4(v_Position, 1.0); -} \ No newline at end of file diff --git a/community/src/__init__.py b/community/src/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/community/src/chunk/__init__.py b/community/src/chunk/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/community/src/chunk/chunk.py b/community/src/chunk/chunk.py deleted file mode 100644 index 1f952920..00000000 --- a/community/src/chunk/chunk.py +++ /dev/null @@ -1,372 +0,0 @@ -import ctypes -from collections import deque - -import pyglet.gl as gl - -from src.chunk.subchunk import SUBCHUNK_WIDTH, SUBCHUNK_HEIGHT, SUBCHUNK_LENGTH, Subchunk -import src.options as options - -CHUNK_WIDTH = 16 -CHUNK_HEIGHT = 128 -CHUNK_LENGTH = 16 - - -class Chunk: - def __init__(self, world, chunk_position): - self.world = world - self.shader_chunk_offset_location = self.world.shader.find_uniform(b"u_ChunkPosition") - - self.modified = False - self.chunk_position = chunk_position - - self.position = ( - self.chunk_position[0] * CHUNK_WIDTH, - self.chunk_position[1] * CHUNK_HEIGHT, - self.chunk_position[2] * CHUNK_LENGTH, - ) - - self.blocks = [[[0 for z in range(CHUNK_LENGTH)] for y in range(CHUNK_HEIGHT)] for x in range(CHUNK_WIDTH)] - # Numpy is really slow there - self.lightmap = [[[0 for z in range(CHUNK_LENGTH)] for y in range(CHUNK_HEIGHT)] for x in range(CHUNK_WIDTH)] - - self.subchunks = {} - self.chunk_update_queue = deque() - - for x in range(int(CHUNK_WIDTH / SUBCHUNK_WIDTH)): - for y in range(int(CHUNK_HEIGHT / SUBCHUNK_HEIGHT)): - for z in range(int(CHUNK_LENGTH / SUBCHUNK_LENGTH)): - self.subchunks[(x, y, z)] = Subchunk(self, (x, y, z)) - - # mesh variables - - self.mesh = [] - self.translucent_mesh = [] - - self.mesh_quad_count = 0 - self.translucent_quad_count = 0 - - # create VAO and VBO's - - self.vao = gl.GLuint(0) - gl.glGenVertexArrays(1, self.vao) - gl.glBindVertexArray(self.vao) - - self.vbo = gl.GLuint(0) - gl.glGenBuffers(1, self.vbo) - gl.glBindBuffer(gl.GL_ARRAY_BUFFER, self.vbo) - gl.glBufferData( - gl.GL_ARRAY_BUFFER, - ctypes.sizeof(gl.GLfloat * CHUNK_WIDTH * CHUNK_HEIGHT * CHUNK_LENGTH * 7), - None, - gl.GL_DYNAMIC_DRAW, - ) - - gl.glVertexAttribPointer(0, 3, gl.GL_FLOAT, gl.GL_FALSE, 7 * ctypes.sizeof(gl.GLfloat), 0) - gl.glEnableVertexAttribArray(0) - gl.glVertexAttribPointer( - 1, 1, gl.GL_FLOAT, gl.GL_FALSE, 7 * ctypes.sizeof(gl.GLfloat), 3 * ctypes.sizeof(gl.GLfloat) - ) - gl.glEnableVertexAttribArray(1) - gl.glVertexAttribPointer( - 2, 1, gl.GL_FLOAT, gl.GL_FALSE, 7 * ctypes.sizeof(gl.GLfloat), 4 * ctypes.sizeof(gl.GLfloat) - ) - gl.glEnableVertexAttribArray(2) - gl.glVertexAttribPointer( - 3, 1, gl.GL_FLOAT, gl.GL_FALSE, 7 * ctypes.sizeof(gl.GLfloat), 5 * ctypes.sizeof(gl.GLfloat) - ) - gl.glEnableVertexAttribArray(3) - gl.glVertexAttribPointer( - 4, 1, gl.GL_FLOAT, gl.GL_FALSE, 7 * ctypes.sizeof(gl.GLfloat), 6 * ctypes.sizeof(gl.GLfloat) - ) - gl.glEnableVertexAttribArray(4) - - gl.glBindBuffer(gl.GL_ELEMENT_ARRAY_BUFFER, world.ibo) - - if self.world.options.INDIRECT_RENDERING: - self.indirect_command_buffer = gl.GLuint(0) - gl.glGenBuffers(1, self.indirect_command_buffer) - gl.glBindBuffer(gl.GL_DRAW_INDIRECT_BUFFER, self.indirect_command_buffer) - gl.glBufferData(gl.GL_DRAW_INDIRECT_BUFFER, ctypes.sizeof(gl.GLuint * 10), None, gl.GL_DYNAMIC_DRAW) - - self.draw_commands = [] - - self.occlusion_query = gl.GLuint(0) - gl.glGenQueries(1, self.occlusion_query) - - def __del__(self): - gl.glDeleteQueries(1, self.occlusion_query) - gl.glDeleteBuffers(1, self.vbo) - gl.glDeleteVertexArrays(1, self.vao) - - def get_block_light(self, position): - x, y, z = position - return self.lightmap[x][y][z] & 0xF - - def set_block_light(self, position, value): - x, y, z = position - self.lightmap[x][y][z] = (self.lightmap[x][y][z] & 0xF0) | value - - def get_sky_light(self, position): - x, y, z = position - return (self.lightmap[x][y][z] >> 4) & 0xF - - def set_sky_light(self, position, value): - x, y, z = position - self.lightmap[x][y][z] = (self.lightmap[x][y][z] & 0xF) | (value << 4) - - def get_raw_light(self, position): - x, y, z = position - return self.lightmap[x][y][z] - - def get_block_number(self, position): - lx, ly, lz = position - - block_number = self.blocks[lx][ly][lz] - return block_number - - def get_transparency(self, position): - block_type = self.world.block_types[self.get_block_number(position)] - - if not block_type: - return 2 - - return block_type.transparent - - def is_opaque_block(self, position): - # get block type and check if it's opaque or not - # air counts as a transparent block, so test for that too - - block_type = self.world.block_types[self.get_block_number(position)] - - if not block_type: - return False - - return not block_type.transparent - - def update_subchunk_meshes(self): - self.chunk_update_queue.clear() - for subchunk in self.subchunks.values(): - self.chunk_update_queue.append(subchunk) - - def update_at_position(self, position): - x, y, z = position - - lx = int(x % SUBCHUNK_WIDTH) - ly = int(y % SUBCHUNK_HEIGHT) - lz = int(z % SUBCHUNK_LENGTH) - - clx, cly, clz = self.world.get_local_position(position) - - sx = clx // SUBCHUNK_WIDTH - sy = cly // SUBCHUNK_HEIGHT - sz = clz // SUBCHUNK_LENGTH - - if self.subchunks[(sx, sy, sz)] not in self.chunk_update_queue: - self.chunk_update_queue.append(self.subchunks[(sx, sy, sz)]) - - def try_update_subchunk_mesh(subchunk_position): - if subchunk_position in self.subchunks: - if self.subchunks[subchunk_position] not in self.chunk_update_queue: - self.chunk_update_queue.append(self.subchunks[subchunk_position]) - - if lx == SUBCHUNK_WIDTH - 1: - try_update_subchunk_mesh((sx + 1, sy, sz)) - if lx == 0: - try_update_subchunk_mesh((sx - 1, sy, sz)) - - if ly == SUBCHUNK_HEIGHT - 1: - try_update_subchunk_mesh((sx, sy + 1, sz)) - if ly == 0: - try_update_subchunk_mesh((sx, sy - 1, sz)) - - if lz == SUBCHUNK_LENGTH - 1: - try_update_subchunk_mesh((sx, sy, sz + 1)) - if lz == 0: - try_update_subchunk_mesh((sx, sy, sz - 1)) - - def process_chunk_updates(self): - for _ in range(self.world.options.CHUNK_UPDATES): - if self.chunk_update_queue: - subchunk = self.chunk_update_queue.popleft() - subchunk.update_mesh() - self.world.chunk_update_counter += 1 - if not self.chunk_update_queue: - self.world.chunk_building_queue.append(self) - return - - def update_mesh(self): - # combine all the small subchunk meshes into one big chunk mesh - - for subchunk in self.subchunks.values(): - self.mesh += subchunk.mesh - self.translucent_mesh += subchunk.translucent_mesh - - # send the full mesh data to the GPU and free the memory used client-side (we don't need it anymore) - # don't forget to save the length of 'self.mesh_indices' before freeing - - self.mesh_quad_count = len(self.mesh) // 28 # 28 = 7 (attributes of a vertex) * 4 (number of vertices per quad) - self.translucent_quad_count = len(self.translucent_mesh) // 28 - - self.send_mesh_data_to_gpu() - - self.mesh = [] - self.translucent_mesh = [] - - def send_mesh_data_to_gpu(self): # pass mesh data to gpu - if not self.mesh_quad_count: - return - - gl.glBindVertexArray(self.vao) - - gl.glBindBuffer(gl.GL_ARRAY_BUFFER, self.vbo) - gl.glBufferData( - gl.GL_ARRAY_BUFFER, # Orphaning - ctypes.sizeof(gl.GLfloat * CHUNK_WIDTH * CHUNK_HEIGHT * CHUNK_LENGTH * 7), - None, - gl.GL_DYNAMIC_DRAW, - ) - gl.glBufferSubData( - gl.GL_ARRAY_BUFFER, 0, ctypes.sizeof(gl.GLfloat * len(self.mesh)), (gl.GLfloat * len(self.mesh))(*self.mesh) - ) - gl.glBufferSubData( - gl.GL_ARRAY_BUFFER, - ctypes.sizeof(gl.GLfloat * len(self.mesh)), - ctypes.sizeof(gl.GLfloat * len(self.translucent_mesh)), - (gl.GLfloat * len(self.translucent_mesh))(*self.translucent_mesh), - ) - - if not self.world.options.INDIRECT_RENDERING: - return - - self.draw_commands = [ - # Index Count Instance Count Base Index Base Vertex Base Instance - self.mesh_quad_count * 6, - 1, - 0, - 0, - 0, # Opaque mesh commands - self.translucent_quad_count * 6, - 1, - 0, - self.mesh_quad_count * 4, - 0, # Translucent mesh commands - ] - - gl.glBindBuffer(gl.GL_DRAW_INDIRECT_BUFFER, self.indirect_command_buffer) - gl.glBufferSubData( - gl.GL_DRAW_INDIRECT_BUFFER, - 0, - ctypes.sizeof(gl.GLuint * len(self.draw_commands)), - (gl.GLuint * len(self.draw_commands))(*self.draw_commands), - ) - - def draw_direct(self, mode): - if not self.mesh_quad_count: - return - gl.glBindVertexArray(self.vao) - gl.glUniform2i(self.shader_chunk_offset_location, self.chunk_position[0], self.chunk_position[2]) - gl.glDrawElements( - mode, - self.mesh_quad_count * 6, - gl.GL_UNSIGNED_INT, - None, - ) - - def draw_indirect(self, mode): - if not self.mesh_quad_count: - return - - gl.glBindVertexArray(self.vao) - gl.glBindBuffer(gl.GL_DRAW_INDIRECT_BUFFER, self.indirect_command_buffer) - gl.glUniform2i(self.shader_chunk_offset_location, self.chunk_position[0], self.chunk_position[2]) - - gl.glDrawElementsIndirect( - mode, - gl.GL_UNSIGNED_INT, - None, - ) - - def draw_direct_advanced(self, mode): - if not self.mesh_quad_count: - return - - gl.glBindVertexArray(self.vao) - gl.glUniform2i(self.shader_chunk_offset_location, self.chunk_position[0], self.chunk_position[2]) - - gl.glBeginQuery(gl.GL_ANY_SAMPLES_PASSED, self.occlusion_query) - gl.glDrawElements( - mode, - self.mesh_quad_count * 6, - gl.GL_UNSIGNED_INT, - None, - ) - gl.glEndQuery(gl.GL_ANY_SAMPLES_PASSED) - - gl.glBeginConditionalRender(self.occlusion_query, gl.GL_QUERY_BY_REGION_WAIT) - gl.glDrawElements( - mode, - self.mesh_quad_count * 6, - gl.GL_UNSIGNED_INT, - None, - ) - gl.glEndConditionalRender() - - def draw_indirect_advanced(self, mode): - if not self.mesh_quad_count: - return - - gl.glBindVertexArray(self.vao) - gl.glBindBuffer(gl.GL_DRAW_INDIRECT_BUFFER, self.indirect_command_buffer) - gl.glUniform2i(self.shader_chunk_offset_location, self.chunk_position[0], self.chunk_position[2]) - - gl.glBeginQuery(gl.GL_ANY_SAMPLES_PASSED, self.occlusion_query) - gl.glDrawElementsIndirect( - mode, - gl.GL_UNSIGNED_INT, - None, - ) - gl.glEndQuery(gl.GL_ANY_SAMPLES_PASSED) - - gl.glBeginConditionalRender(self.occlusion_query, gl.GL_QUERY_BY_REGION_WAIT) - gl.glDrawElementsIndirect( - mode, - gl.GL_UNSIGNED_INT, - None, - ) - gl.glEndConditionalRender() - - draw_normal = draw_indirect if options.INDIRECT_RENDERING else draw_direct - draw_advanced = draw_indirect_advanced if options.INDIRECT_RENDERING else draw_direct_advanced - draw = draw_advanced if options.ADVANCED_OPENGL else draw_normal - - def draw_translucent_direct(self, mode): - if not self.mesh_quad_count: - return - - gl.glBindVertexArray(self.vao) - gl.glUniform2i(self.shader_chunk_offset_location, self.chunk_position[0], self.chunk_position[2]) - - gl.glDrawElementsBaseVertex( - mode, self.translucent_quad_count * 6, gl.GL_UNSIGNED_INT, None, self.mesh_quad_count * 4 - ) - - def draw_translucent_indirect(self, mode): - if not self.translucent_quad_count: - return - - gl.glBindVertexArray(self.vao) - gl.glBindBuffer(gl.GL_DRAW_INDIRECT_BUFFER, self.indirect_command_buffer) - gl.glUniform2i(self.shader_chunk_offset_location, self.chunk_position[0], self.chunk_position[2]) - - gl.glMemoryBarrier(gl.GL_COMMAND_BARRIER_BIT) - - gl.glDrawElementsIndirect( - mode, - gl.GL_UNSIGNED_INT, - 5 - * ctypes.sizeof( - gl.GLuint - ), # offset pointer to the indirect command buffer pointing to the translucent mesh commands - ) - - draw_translucent = draw_translucent_indirect if options.INDIRECT_RENDERING else draw_translucent_direct diff --git a/community/src/chunk/subchunk.py b/community/src/chunk/subchunk.py deleted file mode 100644 index 43872064..00000000 --- a/community/src/chunk/subchunk.py +++ /dev/null @@ -1,274 +0,0 @@ -import glm -from functools import lru_cache as cache - -from src.util import UP, DOWN, NORTH, SOUTH, EAST, WEST, DIRECTIONS - -SUBCHUNK_WIDTH = 4 -SUBCHUNK_HEIGHT = 4 -SUBCHUNK_LENGTH = 4 - - -@cache(maxsize=None) -def smooth(a, b, c, d): - if not a or not b or not c or not d: - light = (a, *(i for i in (b, c, d) if i)) - min_val = min(light) - a = max(a, min_val) - b = max(b, min_val) - c = max(c, min_val) - d = max(d, min_val) - return (a + b + c + d) / 4 - - -@cache(maxsize=None) -def ao(s1, s2, c): - if s1 and s2: - return 0.25 - return 1 - (s1 + s2 + c) / 4 - - -class Subchunk: - def __init__(self, parent, subchunk_position): - self.parent = parent - self.world = self.parent.world - - self.subchunk_position = subchunk_position - - self.local_position = ( - self.subchunk_position[0] * SUBCHUNK_WIDTH, - self.subchunk_position[1] * SUBCHUNK_HEIGHT, - self.subchunk_position[2] * SUBCHUNK_LENGTH, - ) - - self.position = ( - self.parent.position[0] + self.local_position[0], - self.parent.position[1] + self.local_position[1], - self.parent.position[2] + self.local_position[2], - ) - - # mesh variables - - self.mesh = [] - self.mesh_array = None - - self.translucent_mesh = [] - self.translucent_mesh_array = None - - def get_raw_light(self, pos, npos): - if not npos: - light_levels = self.world.get_light(pos) - else: - light_levels = self.world.get_light(npos) - return [light_levels] * 4 - - def get_raw_skylight(self, pos, npos): - if not npos: - light_levels = self.world.get_skylight(pos) - else: - light_levels = self.world.get_skylight(npos) - return [light_levels] * 4 - - def get_face_ao(self, s1, s2, s3, s4, s5, s6, s7, s8): - vertex1 = ao(s2, s4, s1) - vertex2 = ao(s4, s7, s6) - vertex3 = ao(s5, s7, s8) - vertex4 = ao(s2, s5, s3) - return (vertex1, vertex2, vertex3, vertex4) - - def get_smooth_face_light(self, light, light1, light2, light3, light4, light5, light6, light7, light8): - vertex1 = smooth(light, light2, light4, light1) - vertex2 = smooth(light, light4, light7, light6) - vertex3 = smooth(light, light5, light7, light8) - vertex4 = smooth(light, light2, light5, light3) - return (vertex1, vertex2, vertex3, vertex4) - - def get_neighbour_voxels(self, npos, face): - if not face: # EAST - neighbours = [ - npos + UP + SOUTH, - npos + UP, - npos + UP + NORTH, - npos + SOUTH, - npos + NORTH, - npos + DOWN + SOUTH, - npos + DOWN, - npos + DOWN + NORTH, - ] - elif face == 1: # WEST - neighbours = [ - npos + UP + NORTH, - npos + UP, - npos + UP + SOUTH, - npos + NORTH, - npos + SOUTH, - npos + DOWN + NORTH, - npos + DOWN, - npos + DOWN + SOUTH, - ] - elif face == 2: # UP - neighbours = [ - npos + SOUTH + EAST, - npos + SOUTH, - npos + SOUTH + WEST, - npos + EAST, - npos + WEST, - npos + NORTH + EAST, - npos + NORTH, - npos + NORTH + WEST, - ] - elif face == 3: # DOWN - neighbours = [ - npos + SOUTH + WEST, - npos + SOUTH, - npos + SOUTH + EAST, - npos + WEST, - npos + EAST, - npos + NORTH + WEST, - npos + NORTH, - npos + NORTH + EAST, - ] - elif face == 4: - neighbours = [ - npos + UP + WEST, - npos + UP, - npos + UP + EAST, - npos + WEST, - npos + EAST, - npos + DOWN + WEST, - npos + DOWN, - npos + DOWN + EAST, - ] - elif face == 5: - neighbours = [ - npos + UP + EAST, - npos + UP, - npos + UP + WEST, - npos + EAST, - npos + WEST, - npos + DOWN + EAST, - npos + DOWN, - npos + DOWN + WEST, - ] - else: - return [] - return neighbours - - def get_light_smooth(self, block, face, pos, npos): - if not npos or block in self.world.light_blocks: - return [self.world.get_light(pos)] * 4 - - neighbours = self.get_neighbour_voxels(npos, face) - - nlights = (self.world.get_light(neighbour_pos) for neighbour_pos in neighbours) - - return self.get_smooth_face_light(self.world.get_light(npos), *nlights) - - def get_skylight_smooth(self, block, face, pos, npos): - if not npos or block in self.world.light_blocks: - return [self.world.get_skylight(pos)] * 4 - - neighbours = self.get_neighbour_voxels(npos, face) - - nlights = (self.world.get_skylight(neighbour_pos) for neighbour_pos in neighbours) - - return self.get_smooth_face_light(self.world.get_skylight(npos), *nlights) - - def get_ambient(self, block, block_type, face, npos): - raw_shading = block_type.shading_values[face] - if not block_type.is_cube or block in self.world.light_blocks: - return raw_shading - - neighbours = self.get_neighbour_voxels(npos, face) - - neighbour_opacity = (self.world.is_opaque_block(neighbour_pos) for neighbour_pos in neighbours) - - face_ao = self.get_face_ao(*neighbour_opacity) - - return [a * b for a, b in zip(face_ao, raw_shading)] - - def get_shading(self, block, block_type, face, npos): - return ( - self.get_ambient(block, block_type, face, npos) - if self.world.options.SMOOTH_LIGHTING - else block_type.shading_values[face] - ) - - def get_light(self, block, face, pos, npos): - return ( - self.get_light_smooth(block, face, pos, npos) - if self.world.options.SMOOTH_LIGHTING - else self.get_raw_light(pos, npos) - ) - - def get_skylight(self, block, face, pos, npos): - return ( - self.get_skylight_smooth(block, face, pos, npos) - if self.world.options.SMOOTH_LIGHTING - else self.get_raw_skylight(pos, npos) - ) - - def add_face(self, face, pos, lpos, block, block_type, npos=None): - lx, ly, lz = lpos - vertex_positions = block_type.vertex_positions[face] - tex_index = block_type.tex_indices[face] - shading = self.get_shading(block, block_type, face, npos) - lights = self.get_light(block, face, pos, npos) - skylights = self.get_skylight(block, face, pos, npos) - - if block_type.model.translucent: - mesh = self.translucent_mesh - else: - mesh = self.mesh - - for i in range(4): - mesh += [ - vertex_positions[i * 3 + 0] + lx, - vertex_positions[i * 3 + 1] + ly, - vertex_positions[i * 3 + 2] + lz, - tex_index * 4 + i, - shading[i], - lights[i], - skylights[i], - ] - - def can_render_face(self, block_type, block_number, position): - return not ( - self.world.is_opaque_block(position) - or (block_type.glass and self.world.get_block_number(position) == block_number) - ) - - def update_mesh(self): - self.mesh = [] - self.translucent_mesh = [] - - for local_x in range(SUBCHUNK_WIDTH): - for local_y in range(SUBCHUNK_HEIGHT): - for local_z in range(SUBCHUNK_LENGTH): - parent_lx = self.local_position[0] + local_x - parent_ly = self.local_position[1] + local_y - parent_lz = self.local_position[2] + local_z - - block_number = self.parent.blocks[parent_lx][parent_ly][parent_lz] - - parent_lpos = glm.ivec3(parent_lx, parent_ly, parent_lz) - - if block_number: - block_type = self.world.block_types[block_number] - - pos = glm.ivec3( - self.position[0] + local_x, self.position[1] + local_y, self.position[2] + local_z - ) - - # if block is cube, we want it to check neighbouring blocks so that we don't uselessly render faces - # if block isn't a cube, we just want to render all faces, regardless of neighbouring blocks - # since the vast majority of blocks are probably anyway going to be cubes, this won't impact performance all that much; the amount of useless faces drawn is going to be minimal - - if block_type.is_cube: - for face, direction in enumerate(DIRECTIONS): - npos = pos + direction - if self.can_render_face(block_type, block_number, npos): - self.add_face(face, pos, parent_lpos, block_number, block_type, npos) - - else: - for i in range(len(block_type.vertex_positions)): - self.add_face(i, pos, parent_lpos, block_number, block_type) diff --git a/community/src/controllers/__init__.py b/community/src/controllers/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/community/src/controllers/controller.py b/community/src/controllers/controller.py deleted file mode 100644 index 3d4460e8..00000000 --- a/community/src/controllers/controller.py +++ /dev/null @@ -1,131 +0,0 @@ -import random -from enum import IntEnum - -from src.chunk.chunk import CHUNK_WIDTH, CHUNK_LENGTH, CHUNK_HEIGHT -from src.physics.hit import HIT_RANGE, HitRay -from src.entity.player import SPRINTING_SPEED, WALKING_SPEED - - -class Controller: - class InteractMode(IntEnum): - PLACE = 0 - BREAK = 1 - PICK = 2 - - class MiscMode(IntEnum): - RANDOM = 0 - SAVE = 1 - ESCAPE = 2 - SPEED_TIME = 3 - FULLSCREEN = 4 - FLY = 5 - TELEPORT = 6 - TOGGLE_F3 = 7 - TOGGLE_AO = 8 - - class MoveMode(IntEnum): - LEFT = 0 - RIGHT = 1 - DOWN = 2 - UP = 3 - BACKWARD = 4 - FORWARD = 5 - - class ModifierMode(IntEnum): - SPRINT = 0 - - def __init__(self, game): - self.game = game - - def interact(self, mode): - def hit_callback(current_block, next_block): - if mode == self.InteractMode.PLACE: - self.game.world.try_set_block(current_block, self.game.holding, self.game.player.collider) - elif mode == self.InteractMode.BREAK: - self.game.world.set_block(next_block, 0) - elif mode == self.InteractMode.PICK: - self.game.holding = self.game.world.get_block_number(next_block) - - x, y, z = self.game.player.position - y += self.game.player.eyelevel - - hit_ray = HitRay(self.game.world, self.game.player.rotation, (x, y, z)) - - while hit_ray.distance < HIT_RANGE: - if hit_ray.step(hit_callback): - break - - def misc(self, mode): - if mode == self.MiscMode.RANDOM: - self.game.holding = random.randint(1, len(self.game.world.block_types) - 1) - elif mode == self.MiscMode.SAVE: - self.game.world.save.save() - elif mode == self.MiscMode.ESCAPE: - self.game.mouse_captured = False - self.game.set_exclusive_mouse(False) - elif mode == self.MiscMode.SPEED_TIME: - self.game.world.speed_daytime() - elif mode == self.MiscMode.FULLSCREEN: - self.game.toggle_fullscreen() - elif mode == self.MiscMode.FLY: - self.game.player.flying = not self.game.player.flying - elif mode == self.MiscMode.TELEPORT: - # how large is the world? - - max_y = 0 - - max_x, max_z = (0, 0) - min_x, min_z = (0, 0) - - for pos in self.game.world.chunks: - x, y, z = pos - - max_y = max(max_y, (y + 1) * CHUNK_HEIGHT) - - max_x = max(max_x, (x + 1) * CHUNK_WIDTH) - min_x = min(min_x, x * CHUNK_WIDTH) - - max_z = max(max_z, (z + 1) * CHUNK_LENGTH) - min_z = min(min_z, z * CHUNK_LENGTH) - - # get random X & Z coordinates to teleport the player to - - x = random.randint(min_x, max_x) - z = random.randint(min_z, max_z) - - # find height at which to teleport to, by finding the first non-air block from the top of the world - - for y in range(CHUNK_HEIGHT - 1, -1, -1): - if not self.game.world.get_block_number((x, y, z)): - continue - - self.game.player.teleport((x, y + 1, z)) - break - elif mode == self.MiscMode.TOGGLE_F3: - self.game.show_f3 = not self.game.show_f3 - elif mode == self.MiscMode.TOGGLE_AO: - self.game.world.toggle_AO() - - def update_move(self, axis): - self.game.player.input[axis] = round(max(-1, min(self.game.controls[axis], 1))) - - def start_move(self, mode): - axis = int((mode if mode % 2 == 0 else mode - 1) / 2) - self.game.controls[axis] += -1 if mode % 2 == 0 else 1 - self.update_move(axis) - - def end_move(self, mode): - axis = int((mode if mode % 2 == 0 else mode - 1) / 2) - self.game.controls[axis] -= -1 if mode % 2 == 0 else 1 - self.update_move(axis) - - def start_modifier(self, mode): - if mode == self.ModifierMode.SPRINT: - self.game.player.target_speed = SPRINTING_SPEED - - def end_modifier(self, mode): - if mode == self.ModifierMode.SPRINT: - self.game.player.target_speed = WALKING_SPEED - - def apply_deadzone(self, value): - return value diff --git a/community/src/controllers/joystick.py b/community/src/controllers/joystick.py deleted file mode 100644 index ca6f38e7..00000000 --- a/community/src/controllers/joystick.py +++ /dev/null @@ -1,193 +0,0 @@ -import threading -import math -import time - -import pyglet.input - -from src.controllers.controller import Controller -from src.entity.player import WALKING_SPEED, SPRINTING_SPEED - - -class JoystickController(Controller): - def __init__(self, game): - super().__init__(game) - self.init_joysticks(pyglet.input.get_joysticks()) - - self.camera_sensitivity = 0.007 - self.deadzone = 0.25 - self.update_delay = 0.15 - self.last_update = 0 - - self.joystick_move = [0, 0] - self.joystick_look = [0, 0] - self.joystick_interact = [0, 0] - - self.joystick_updater = threading.Thread(target=self.updater, daemon=True, name="Joystick Updater") - self.joystick_updater.start() - - def updater(self): - while True: - joysticks = pyglet.input.get_joysticks() - - if joysticks is not None and len(joysticks) != len(self.joysticks): - self.init_joysticks(joysticks) - - time.sleep(2) - - def init_joysticks(self, joysticks): - self.joysticks = joysticks - - for joystick in self.joysticks: - joystick.on_joybutton_press = self.on_joybutton_press - joystick.on_joybutton_release = self.on_joybutton_release - joystick.on_joyaxis_motion = self.on_joyaxis_motion - joystick.open(exclusive=True) - - def update_controller(self): - if not self.game.mouse_captured or not self.joysticks: - return - - self.game.player.rotation[0] += self.joystick_look[0] * self.camera_sensitivity - self.game.player.rotation[1] += -self.joystick_look[1] * self.camera_sensitivity - - self.game.player.rotation[1] = max(-math.tau / 4, min(math.tau / 4, self.game.player.rotation[1])) - - if round(max(self.joystick_interact)) > 0 and (self.last_update + self.update_delay) <= time.process_time(): - if round(self.joystick_interact[0]) > 0: - self.interact(self.InteractMode.BREAK) - if round(self.joystick_interact[1]) > 0: - self.interact(self.InteractMode.PLACE) - - self.last_update = time.process_time() - - def on_joybutton_press(self, joystick, button): - if "xbox" in joystick.device.name.lower(): - if button == 1: - self.misc(self.MiscMode.RANDOM) - elif button == 2: - self.interact(self.InteractMode.PICK) - elif button == 3: - self.misc(self.MiscMode.SAVE) - - elif button == 0: - self.start_move(self.MoveMode.UP) - elif button == 9: - self.start_move(self.MoveMode.DOWN) - - elif button == 8: - if self.game.player.target_speed == SPRINTING_SPEED: - self.end_modifier(self.ModifierMode.SPRINT) - elif self.game.player.target_speed == WALKING_SPEED: - self.start_modifier(self.ModifierMode.SPRINT) - - elif "wireless controller" == joystick.device.name.lower(): - if button == 2: - self.misc(self.MiscMode.RANDOM) - elif button == 0: - self.interact(self.InteractMode.PICK) - elif button == 3: - self.misc(self.MiscMode.SAVE) - - elif button == 1: - self.start_move(self.MoveMode.UP) - elif button == 11: - self.start_move(self.MoveMode.DOWN) - - elif button == 10: - if self.game.player.target_speed == SPRINTING_SPEED: - self.end_modifier(self.ModifierMode.SPRINT) - elif self.game.player.target_speed == WALKING_SPEED: - self.start_modifier(self.ModifierMode.SPRINT) - - def on_joybutton_release(self, joystick, button): - if "xbox" in joystick.device.name.lower(): - if button == 0: - self.end_move(self.MoveMode.UP) - elif button == 9: - self.end_move(self.MoveMode.DOWN) - - elif "wireless controller" == joystick.device.name.lower(): - if button == 1: - self.end_move(self.MoveMode.UP) - elif button == 11: - self.end_move(self.MoveMode.DOWN) - - def on_joyaxis_motion(self, joystick, axis, value): - if abs(value) < self.deadzone: - value = 0 - - if "xbox" in joystick.device.name.lower(): - if axis == "x": - if math.ceil(value) > 0 and self.joystick_move[0] == 0: - self.start_move(self.MoveMode.RIGHT) - elif math.floor(value) < 0 and self.joystick_move[0] == 0: - self.start_move(self.MoveMode.LEFT) - elif value == 0 and math.ceil(self.joystick_move[0]) > 0: - self.end_move(self.MoveMode.RIGHT) - elif value == 0 and math.floor(self.joystick_move[0]) < 0: - self.end_move(self.MoveMode.LEFT) - - self.joystick_move[0] = value - elif axis == "y": - if math.ceil(value) > 0 and self.joystick_move[1] == 0: - self.start_move(self.MoveMode.BACKWARD) - elif math.floor(value) < 0 and self.joystick_move[1] == 0: - self.start_move(self.MoveMode.FORWARD) - elif value == 0 and math.ceil(self.joystick_move[1]) > 0: - self.end_move(self.MoveMode.BACKWARD) - elif value == 0 and math.floor(self.joystick_move[1]) < 0: - self.end_move(self.MoveMode.FORWARD) - - self.joystick_move[1] = value - - if axis == "rx": - self.joystick_look[0] = value - if axis == "ry": - self.joystick_look[1] = value - - if axis == "z": - if value < 0: - self.joystick_interact[0] = -value - if value > 0: - self.joystick_interact[1] = value - - elif "wireless controller" == joystick.device.name.lower(): - if axis == "x": - if math.ceil(value) > 0 and self.joystick_move[0] == 0: - self.start_move(self.MoveMode.RIGHT) - elif math.floor(value) < 0 and self.joystick_move[0] == 0: - self.start_move(self.MoveMode.LEFT) - elif value == 0 and math.ceil(self.joystick_move[0]) > 0: - self.end_move(self.MoveMode.RIGHT) - elif value == 0 and math.floor(self.joystick_move[0]) < 0: - self.end_move(self.MoveMode.LEFT) - - self.joystick_move[0] = value - elif axis == "y": - if math.ceil(value) > 0 and self.joystick_move[1] == 0: - self.start_move(self.MoveMode.BACKWARD) - elif math.floor(value) < 0 and self.joystick_move[1] == 0: - self.start_move(self.MoveMode.FORWARD) - elif value == 0 and math.ceil(self.joystick_move[1]) > 0: - self.end_move(self.MoveMode.BACKWARD) - elif value == 0 and math.floor(self.joystick_move[1]) < 0: - self.end_move(self.MoveMode.FORWARD) - - self.joystick_move[1] = value - - if axis == "z": - self.joystick_look[0] = value - if axis == "rz": - self.joystick_look[1] = value - - if axis == "rx": - self.joystick_interact[0] = value - if axis == "ry": - self.joystick_interact[1] = value - - def apply_deadzone(self, value): - if abs(value[0]) < self.deadzone: - value[0] = 0 - if abs(value[1]) < self.deadzone: - value[1] = 0 - return value diff --git a/community/src/controllers/keyboard_mouse.py b/community/src/controllers/keyboard_mouse.py deleted file mode 100644 index 3e6a5c34..00000000 --- a/community/src/controllers/keyboard_mouse.py +++ /dev/null @@ -1,102 +0,0 @@ -import math - -import pyglet.window.mouse - -from src.controllers.controller import Controller - - -class KeyboardMouseController(Controller): - def __init__(self, game): - super().__init__(game) - - self.game.on_mouse_press = self.on_mouse_press - self.game.on_mouse_motion = self.on_mouse_motion - self.game.on_mouse_drag = self.on_mouse_drag - - self.game.on_key_press = self.on_key_press - self.game.on_key_release = self.on_key_release - - def on_mouse_press(self, x, y, button, modifiers): - if not self.game.mouse_captured: - self.game.mouse_captured = True - self.game.set_exclusive_mouse(True) - - return - - if button == pyglet.window.mouse.RIGHT: - self.interact(self.InteractMode.PLACE) - elif button == pyglet.window.mouse.LEFT: - self.interact(self.InteractMode.BREAK) - elif button == pyglet.window.mouse.MIDDLE: - self.interact(self.InteractMode.PICK) - - def on_mouse_motion(self, x, y, delta_x, delta_y): - if self.game.mouse_captured: - sensitivity = 0.004 - - self.game.player.rotation[0] += delta_x * sensitivity - self.game.player.rotation[1] += delta_y * sensitivity - - self.game.player.rotation[1] = max(-math.tau / 4, min(math.tau / 4, self.game.player.rotation[1])) - - def on_mouse_drag(self, x, y, delta_x, delta_y, buttons, modifiers): - self.on_mouse_motion(x, y, delta_x, delta_y) - - def on_key_press(self, key, modifiers): - if not self.game.mouse_captured: - return - - if key == pyglet.window.key.D: - self.start_move(self.MoveMode.RIGHT) - elif key == pyglet.window.key.A: - self.start_move(self.MoveMode.LEFT) - elif key == pyglet.window.key.W: - self.start_move(self.MoveMode.FORWARD) - elif key == pyglet.window.key.S: - self.start_move(self.MoveMode.BACKWARD) - elif key == pyglet.window.key.SPACE: - self.start_move(self.MoveMode.UP) - elif key == pyglet.window.key.LSHIFT: - self.start_move(self.MoveMode.DOWN) - - elif key == pyglet.window.key.LCTRL: - self.start_modifier(self.ModifierMode.SPRINT) - - elif key == pyglet.window.key.F: - self.misc(self.MiscMode.FLY) - elif key == pyglet.window.key.G: - self.misc(self.MiscMode.RANDOM) - elif key == pyglet.window.key.O: - self.misc(self.MiscMode.SAVE) - elif key == pyglet.window.key.R: - self.misc(self.MiscMode.TELEPORT) - elif key == pyglet.window.key.ESCAPE: - self.misc(self.MiscMode.ESCAPE) - elif key == pyglet.window.key.F6: - self.misc(self.MiscMode.SPEED_TIME) - elif key == pyglet.window.key.F11: - self.misc(self.MiscMode.FULLSCREEN) - elif key == pyglet.window.key.F3: - self.misc(self.MiscMode.TOGGLE_F3) - elif key == pyglet.window.key.F10: - self.misc(self.MiscMode.TOGGLE_AO) - - def on_key_release(self, key, modifiers): - if not self.game.mouse_captured: - return - - if key == pyglet.window.key.D: - self.end_move(self.MoveMode.RIGHT) - elif key == pyglet.window.key.A: - self.end_move(self.MoveMode.LEFT) - elif key == pyglet.window.key.W: - self.end_move(self.MoveMode.FORWARD) - elif key == pyglet.window.key.S: - self.end_move(self.MoveMode.BACKWARD) - elif key == pyglet.window.key.SPACE: - self.end_move(self.MoveMode.UP) - elif key == pyglet.window.key.LSHIFT: - self.end_move(self.MoveMode.DOWN) - - elif key == pyglet.window.key.LCTRL: - self.end_modifier(self.ModifierMode.SPRINT) diff --git a/community/src/entity/__init__.py b/community/src/entity/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/community/src/entity/entity.py b/community/src/entity/entity.py deleted file mode 100644 index 16a60365..00000000 --- a/community/src/entity/entity.py +++ /dev/null @@ -1,171 +0,0 @@ -import math - -from src.physics.collider import Collider - -FLYING_ACCEL = (0, 0, 0) -GRAVITY_ACCEL = (0, -32, 0) - -# these values all come (loosely) from Minecraft, but are multiplied by 20 (since Minecraft runs at 20 TPS) - -FRICTION = (20, 20, 20) - -DRAG_FLY = (5, 5, 5) -DRAG_JUMP = (1.8, 0, 1.8) -DRAG_FALL = (1.8, 0.4, 1.8) - - -class Entity: - def __init__(self, world): - self.world = world - - # physical variables - - self.jump_height = 1.25 - self.flying = False - - self.position = [0.0, 80.0, 0.0] - self.rotation = [-math.tau / 4, 0.0] - - self.old_position = tuple(self.position) - self.old_rotation = tuple(self.rotation) - - self.step = 1 - - self.velocity = [0.0, 0.0, 0.0] - self.accel = [0.0, 0.0, 0.0] - - # collision variables - - self.width = 0.6 - self.height = 1.8 - - self.collider = Collider() - self.grounded = False - - def update_collider(self): - x, y, z = self.position - - self.collider.x1 = x - self.width / 2 - self.collider.x2 = x + self.width / 2 - - self.collider.y1 = y - self.collider.y2 = y + self.height - - self.collider.z1 = z - self.width / 2 - self.collider.z2 = z + self.width / 2 - - def teleport(self, pos: list[float]): - self.position = list(pos) - self.velocity = [0.0, 0.0, 0.0] # to prevent collisions - - def jump(self, height=None): - # obviously, we can't initiate a jump while in mid-air - - if not self.grounded: - return - - if height is None: - height = self.jump_height - - self.velocity[1] = math.sqrt(2 * height * -GRAVITY_ACCEL[1]) - - @property - def friction(self): - if self.flying: - return DRAG_FLY - - elif self.grounded: - return FRICTION - - elif self.velocity[1] > 0: - return DRAG_JUMP - - return DRAG_FALL - - def update(self, delta_time: float): - self.step = 1 - self.old_position = tuple(self.position) - - # apply input acceleration, and adjust for friction/drag - - self.velocity = [v + a * f * delta_time for v, a, f in zip(self.velocity, self.accel, self.friction)] - self.accel = [0.0, 0.0, 0.0] - - # compute collisions - - self.update_collider() - self.grounded = False - - for _ in range(3): - adjusted_velocity = [v * delta_time for v in self.velocity] - vx, vy, vz = adjusted_velocity - - # find all the blocks we could potentially be colliding with - # this step is known as "broad-phasing" - - step_x = 1 if vx > 0 else -1 - step_y = 1 if vy > 0 else -1 - step_z = 1 if vz > 0 else -1 - - steps_xz = int(self.width / 2) - steps_y = int(self.height) - - x, y, z = map(int, self.position) - cx, cy, cz = [int(x + v) for x, v in zip(self.position, adjusted_velocity)] - - potential_collisions = [] - - for i in range(x - step_x * (steps_xz + 1), cx + step_x * (steps_xz + 2), step_x): - for j in range(y - step_y * (steps_y + 2), cy + step_y * (steps_y + 3), step_y): - for k in range(z - step_z * (steps_xz + 1), cz + step_z * (steps_xz + 2), step_z): - pos = (i, j, k) - num = self.world.get_block_number(pos) - - if not num: - continue - - for _collider in self.world.block_types[num].colliders: - entry_time, normal = self.collider.collide(_collider + pos, adjusted_velocity) - - if normal is None: - continue - - potential_collisions.append((entry_time, normal)) - - # get first collision - - if not potential_collisions: - break - - entry_time, normal = min(potential_collisions, key=lambda x: x[0]) - entry_time -= 0.001 - - if normal[0]: - self.velocity[0] = 0 - self.position[0] += vx * entry_time - - if normal[1]: - self.velocity[1] = 0 - self.position[1] += vy * entry_time - - if normal[2]: - self.velocity[2] = 0 - self.position[2] += vz * entry_time - - if normal[1] == 1: - self.grounded = True - - self.position = [x + v * delta_time for x, v in zip(self.position, self.velocity)] - - # apply gravity acceleration - - gravity = (GRAVITY_ACCEL, FLYING_ACCEL)[self.flying] - self.velocity = [v + a * delta_time for v, a in zip(self.velocity, gravity)] - - # apply friction/drag - - self.velocity = [v - min(v * f * delta_time, v, key=abs) for v, f in zip(self.velocity, self.friction)] - - # make sure we can rely on the entity's collider outside of this function - - self.update_collider() diff --git a/community/src/entity/player.py b/community/src/entity/player.py deleted file mode 100644 index 8efee46e..00000000 --- a/community/src/entity/player.py +++ /dev/null @@ -1,187 +0,0 @@ -import math -import glm - -import src.options as options -from src.entity.entity import Entity -from src.chunk.chunk import CHUNK_HEIGHT, CHUNK_LENGTH, CHUNK_WIDTH - -WALKING_SPEED = 4.317 -SPRINTING_SPEED = 7 # faster than in Minecraft, feels better - - -class Frustum: - left = glm.vec4(1.0) - right = glm.vec4(1.0) - top = glm.vec4(1.0) - bottom = glm.vec4(1.0) - near = glm.vec4(1.0) - far = glm.vec4(1.0) - - -def normalize(plane): - return plane / glm.length(plane.xyz) - - -class Player(Entity): - def __init__(self, world, shader, width, height): - super().__init__(world) - - self.view_width = width - self.view_height = height - - # create matrices - - self.mv_matrix = glm.mat4() - self.p_matrix = glm.mat4() - - # shaders - - self.shader = shader - - self.mvp_matrix_location = self.shader.find_uniform(b"u_MVPMatrix") - - # camera variables - - self.eyelevel = self.height - 0.2 - self.input = [0, 0, 0] - - self.target_speed = WALKING_SPEED - self.speed = self.target_speed - - self.interpolated_position = self.position - self.rounded_position = self.position - self.view_ray = glm.vec3(1.0) - - def update(self, delta_time): - # process input - - self.view_ray = glm.vec3( - glm.cos(self.rotation[0]) * glm.cos(self.rotation[1]), - glm.sin(self.rotation[1]), - glm.sin(self.rotation[0]) * glm.cos(self.rotation[1]), - ) - - if delta_time * 20 > 1: - self.speed = self.target_speed - - else: - self.speed += (self.target_speed - self.speed) * delta_time * 20 - - multiplier = self.speed * (1, 2)[self.flying] - - if self.flying and self.input[1]: - self.accel[1] = self.input[1] * multiplier - - if self.input[0] or self.input[2]: - angle = self.rotation[0] - math.atan2(self.input[2], self.input[0]) + math.tau / 4 - - self.accel[0] = math.cos(angle) * multiplier - self.accel[2] = math.sin(angle) * multiplier - - if not self.flying and self.input[1] > 0: - self.jump() - - # process physics & collisions &c - - super().update(delta_time) - - self.rounded_position = [round(i) for i in self.position] - - def update_interpolation(self, delta_time): - self.interpolated_position = glm.mix(glm.vec3(*self.position), glm.vec3(*self.old_position), self.step) - self.step -= delta_time - - def update_frustum(self, mat): - mat = glm.transpose(mat) - for i in range(4): - Frustum.left[i] = mat[3][i] + mat[0][i] - Frustum.right[i] = mat[3][i] - mat[0][i] - Frustum.bottom[i] = mat[3][i] + mat[1][i] - Frustum.top[i] = mat[3][i] - mat[1][i] - Frustum.near[i] = mat[3][i] + mat[2][i] - Frustum.far[i] = mat[3][i] - mat[2][i] - - Frustum.left = normalize(Frustum.left) - Frustum.right = normalize(Frustum.right) - Frustum.bottom = normalize(Frustum.bottom) - Frustum.top = normalize(Frustum.top) - Frustum.near = normalize(Frustum.near) - Frustum.far = normalize(Frustum.far) - - def check_in_frustum(self, chunk_pos): - """Frustum check of each If the chunk is not in the view frustum, it is discarded""" - planes = (Frustum.left, Frustum.right, Frustum.bottom, Frustum.top, Frustum.near, Frustum.far) - result = 2 - center = glm.vec3( - chunk_pos * glm.ivec3(CHUNK_WIDTH, 0, CHUNK_LENGTH) - + glm.ivec3(CHUNK_WIDTH / 2, CHUNK_HEIGHT / 2, CHUNK_LENGTH / 2) - ) - - for plane in planes: - _in = 0 - _out = 0 - normal = plane.xyz - w = plane.w - if glm.dot(normal, center + glm.vec3(CHUNK_WIDTH / 2, CHUNK_HEIGHT / 2, CHUNK_LENGTH / 2)) + w < 0: - _out += 1 - else: - _in += 1 - if glm.dot(normal, center + glm.vec3(-CHUNK_WIDTH / 2, CHUNK_HEIGHT / 2, CHUNK_LENGTH / 2)) + w < 0: - _out += 1 - else: - _in += 1 - if glm.dot(normal, center + glm.vec3(CHUNK_WIDTH / 2, CHUNK_HEIGHT / 2, -CHUNK_LENGTH / 2)) + w < 0: - _out += 1 - else: - _in += 1 - if glm.dot(normal, center + glm.vec3(-CHUNK_WIDTH / 2, CHUNK_HEIGHT / 2, -CHUNK_LENGTH / 2)) + w < 0: - _out += 1 - else: - _in += 1 - if glm.dot(normal, center + glm.vec3(CHUNK_WIDTH / 2, -CHUNK_HEIGHT / 2, CHUNK_LENGTH / 2)) + w < 0: - _out += 1 - else: - _in += 1 - if glm.dot(normal, center + glm.vec3(-CHUNK_WIDTH / 2, -CHUNK_HEIGHT / 2, CHUNK_LENGTH / 2)) + w < 0: - _out += 1 - else: - _in += 1 - if glm.dot(normal, center + glm.vec3(CHUNK_WIDTH / 2, -CHUNK_HEIGHT / 2, -CHUNK_LENGTH / 2)) + w < 0: - _out += 1 - else: - _in += 1 - if glm.dot(normal, center + glm.vec3(-CHUNK_WIDTH / 2, -CHUNK_HEIGHT / 2, -CHUNK_LENGTH / 2)) + w < 0: - _out += 1 - else: - _in += 1 - - if not _in: - return 0 - elif _out: - result = 1 - return result - - def update_matrices(self): - # create projection matrix - - self.p_matrix = glm.perspective( - glm.radians(options.FOV + 10 * (self.speed - WALKING_SPEED) / (SPRINTING_SPEED - WALKING_SPEED)), - float(self.view_width) / self.view_height, - 0.1, - 500, - ) - - # create modelview matrix - - self.mv_matrix = glm.mat4(1.0) - self.mv_matrix = glm.rotate(self.mv_matrix, self.rotation[1], -glm.vec3(1.0, 0.0, 0.0)) - self.mv_matrix = glm.rotate(self.mv_matrix, self.rotation[0] + math.tau / 4, glm.vec3(0.0, 1.0, 0.0)) - - self.mv_matrix = glm.translate( - self.mv_matrix, -glm.vec3(*self.interpolated_position) - glm.vec3(0, self.eyelevel, 0) - ) - - # modelviewprojection matrix - - self.shader.uniform_matrix(self.mvp_matrix_location, self.p_matrix * self.mv_matrix) - self.update_frustum(self.p_matrix * self.mv_matrix) diff --git a/community/src/music.py b/community/src/music.py deleted file mode 100644 index 73dc9ce4..00000000 --- a/community/src/music.py +++ /dev/null @@ -1,9 +0,0 @@ -import pyglet.media - - -class MusicPlayer(pyglet.media.Player): - def __init__(self): - super().__init__() - - self.standby = False - self.next_time = 0 diff --git a/community/src/options.py b/community/src/options.py deleted file mode 100644 index d1b4d8c8..00000000 --- a/community/src/options.py +++ /dev/null @@ -1,69 +0,0 @@ -# FAST = 0; FANCY = 1 -import pyglet.gl as gl - -# Render Distance (in chunks) -RENDER_DISTANCE = 4 - -# Field of view -FOV = 90 - -# --------------------------------- Performance --------------------------------- - -# Indirect Rendering -INDIRECT_RENDERING = False # Requires OpenGL 4.2+. Disable if having issues. -# Indirect rendering caches the draw command parameters in a seperate indirect command buffer, -# thus reducing the amount of data needed to supply the draw call - -# Conditional Rendering with Occlusion queries -ADVANCED_OPENGL = False # Not recommended unless using NVIDIA cards. -# Might cause more slowdowns that speedups. -# Do not expect any concrete framerate improvement. -# Max number of chunk updates per chunk every tick -CHUNK_UPDATES = 4 - -# Vertical Sync -VSYNC = False - -# Max CPU ahead frames -MAX_CPU_AHEAD_FRAMES = 3 # Number of frames the CPU can be ahead of the GPU until waiting for it to finish rendering. -# Higher values gives higher framerate but causes framerate instability and higher frame spikes -# Lower values causes average lower framerate but gives smoother framerate -# Recommended values are between 0 and 9 - -# Legacy Smooth FPS -SMOOTH_FPS = False # Legacy way to force the flushing of command buffer and forces the CPU to wait for the GPU to finish rendering. -# Incompatible Max CPU Ahead Frames (it won't be effective) -# Enable this to test whether its impact is better. Similar to Max CPU Ahead frames to 0 - -# --------------------------------- Quality --------------------------------- - -# Ambient Occlusion and Smooth Lighting -SMOOTH_LIGHTING = True # Smooth Lighting smoothes the light of each vertex to achieve a linear interpolation -# of light on each fragment, hence creating a smoother light effect -# It also adds ambient occlusion, to simulate light blocked by opaqua objects -# Chunk updates / building will be severely affecteds by this feature - -# Better Translucency blending -FANCY_TRANSLUCENCY = True - -# Minification Filter -MIPMAP_TYPE = gl.GL_NEAREST # Linear filtering samples the texture in a bilinear way in the distance, -# however its effect is negligible and should not be used. -# Mipmaps generates lower detailed textures -# that will be sampled in high distances, thus reducing aliasing. -# Possible filters: -# No filter (GL_NEAREST) -# Linear filter (GL_LINEAR), -# Nearest mipmap (GL_NEAREST_MIPMAP_NEAREST), -# Linear mipmap (GL_NEAREST_MIPMAP_LINEAR) -# Bilinear mipmap (GL_LINEAR_MIPMAP_NEAREST) -# Trilinear mipmap (GL_LINEAR_MIPMAP_LINEAR) - -# Colored Lighting -COLORED_LIGHTING = True # Uses an alternative shader program to achieve a more colored lighting -# No performance impact should happen -# It aims to look similar to Beta 1.8+ -# Disable for authentic Alpha - Beta look - -# Multisample Anti-aliasing (might not work) -ANTIALIASING = 0 diff --git a/community/src/physics/__init__.py b/community/src/physics/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/community/src/physics/collider.py b/community/src/physics/collider.py deleted file mode 100644 index 75dbd8db..00000000 --- a/community/src/physics/collider.py +++ /dev/null @@ -1,65 +0,0 @@ -class Collider: - def __init__(self, pos1=(None,) * 3, pos2=(None,) * 3): - # pos1: position of the collider vertex in the -X, -Y, -Z direction - # pos2: position of the collider vertex in the +X, +Y, +Z direction - - self.x1, self.y1, self.z1 = pos1 - self.x2, self.y2, self.z2 = pos2 - - def __add__(self, pos): - x, y, z = pos - - return Collider((self.x1 + x, self.y1 + y, self.z1 + z), (self.x2 + x, self.y2 + y, self.z2 + z)) - - def __and__(self, collider): - x = min(self.x2, collider.x2) - max(self.x1, collider.x1) - y = min(self.y2, collider.y2) - max(self.y1, collider.y1) - z = min(self.z2, collider.z2) - max(self.z1, collider.z1) - - return x > 0 and y > 0 and z > 0 - - def collide(self, collider, velocity): - # self: the dynamic collider, which moves - # collider: the static collider, which stays put - - no_collision = 1, None - - # find entry & exit times for each axis - - vx, vy, vz = velocity - - def time(x, y): - return x / y if y else float("-" * (x > 0) + "inf") - - x_entry = time(collider.x1 - self.x2 if vx > 0 else collider.x2 - self.x1, vx) - x_exit = time(collider.x2 - self.x1 if vx > 0 else collider.x1 - self.x2, vx) - - y_entry = time(collider.y1 - self.y2 if vy > 0 else collider.y2 - self.y1, vy) - y_exit = time(collider.y2 - self.y1 if vy > 0 else collider.y1 - self.y2, vy) - - z_entry = time(collider.z1 - self.z2 if vz > 0 else collider.z2 - self.z1, vz) - z_exit = time(collider.z2 - self.z1 if vz > 0 else collider.z1 - self.z2, vz) - - # make sure we actually got a collision - - if x_entry < 0 and y_entry < 0 and z_entry < 0: - return no_collision - - if x_entry > 1 or y_entry > 1 or z_entry > 1: - return no_collision - - # on which axis did we collide first? - - entry = max(x_entry, y_entry, z_entry) - exit_ = min(x_exit, y_exit, z_exit) - - if entry > exit_: - return no_collision - - # find normal of surface we collided with - - nx = (0, -1 if vx > 0 else 1)[entry == x_entry] - ny = (0, -1 if vy > 0 else 1)[entry == y_entry] - nz = (0, -1 if vz > 0 else 1)[entry == z_entry] - - return entry, (nx, ny, nz) diff --git a/community/src/physics/hit.py b/community/src/physics/hit.py deleted file mode 100644 index e86d2aea..00000000 --- a/community/src/physics/hit.py +++ /dev/null @@ -1,105 +0,0 @@ -import math - -HIT_RANGE = 3 - - -class HitRay: - def __init__(self, world, rotation, starting_position): - self.world = world - - # get the ray unit vector based on rotation angles - # sqrt(ux ^ 2 + uy ^ 2 + uz ^ 2) must always equal 1 - - self.vector = ( - math.cos(rotation[0]) * math.cos(rotation[1]), - math.sin(rotation[1]), - math.sin(rotation[0]) * math.cos(rotation[1]), - ) - - # point position - self.position = list(starting_position) - - # block position in which point currently is - self.block = tuple(map(lambda x: int(round(x)), self.position)) - - # current distance the point has travelled - self.distance = 0 - - # 'check' and 'step' both return 'True' if something is hit, and 'False' if not - - def check(self, hit_callback, distance, current_block, next_block): - if self.world.get_block_number(next_block): - hit_callback(current_block, next_block) - return True - - else: - self.position = list(map(lambda x: self.position[x] + self.vector[x] * distance, range(3))) - - self.block = next_block - self.distance += distance - - return False - - def step(self, hit_callback): - bx, by, bz = self.block - - # point position relative to block centre - local_position = list(map(lambda x: self.position[x] - self.block[x], range(3))) - - # we don't want to deal with negatives, so remove the sign - # this is also cool because it means we don't need to take into account the sign of our ray vector - # we do need to remember which components were negative for later on, however - - sign = [1, 1, 1] # '1' for positive, '-1' for negative - absolute_vector = list(self.vector) - - for component, element in enumerate(self.vector): - sign[component] = 2 * (element >= 0) - 1 - absolute_vector[component] *= sign[component] - local_position[component] *= sign[component] - - lx, ly, lz = local_position - vx, vy, vz = absolute_vector - - # calculate intersections - # I only detail the math for the first component (X) because the rest is pretty self-explanatory - - # ray line (passing through the point) r ≡ (x - lx) / vx = (y - ly) / lz = (z - lz) / vz (parametric equation) - - # +x face fx ≡ x = 0.5 (y & z can be any real number) - # r ∩ fx ≡ (0.5 - lx) / vx = (y - ly) / vy = (z - lz) / vz - - # x: x = 0.5 - # y: (y - ly) / vy = (0.5 - lx) / vx IFF y = (0.5 - lx) / vx * vy + ly - # z: (z - lz) / vz = (0.5 - lx) / vx IFF z = (0.5 - lx) / vx * vz + lz - - if vx: - x = 0.5 - y = (0.5 - lx) / vx * vy + ly - z = (0.5 - lx) / vx * vz + lz - - if y >= -0.5 and y <= 0.5 and z >= -0.5 and z <= 0.5: - distance = math.sqrt((x - lx) ** 2 + (y - ly) ** 2 + (z - lz) ** 2) - - # we can return straight away here - # if we intersect with one face, we know for a fact we're not intersecting with any of the others - - return self.check(hit_callback, distance, (bx, by, bz), (bx + sign[0], by, bz)) - - if vy: - x = (0.5 - ly) / vy * vx + lx - y = 0.5 - z = (0.5 - ly) / vy * vz + lz - - if x >= -0.5 and x <= 0.5 and z >= -0.5 and z <= 0.5: - distance = math.sqrt((x - lx) ** 2 + (y - ly) ** 2 + (z - lz) ** 2) - return self.check(hit_callback, distance, (bx, by, bz), (bx, by + sign[1], bz)) - - if vz: - x = (0.5 - lz) / vz * vx + lx - y = (0.5 - lz) / vz * vy + ly - z = 0.5 - - if x >= -0.5 and x <= 0.5 and y >= -0.5 and y <= 0.5: - distance = math.sqrt((x - lx) ** 2 + (y - ly) ** 2 + (z - lz) ** 2) - return self.check(hit_callback, distance, (bx, by, bz), (bx, by, bz + sign[2])) diff --git a/community/src/renderer/__init__.py b/community/src/renderer/__init__.py deleted file mode 100644 index e69de29b..00000000 diff --git a/community/src/renderer/block_type.py b/community/src/renderer/block_type.py deleted file mode 100644 index 150eab10..00000000 --- a/community/src/renderer/block_type.py +++ /dev/null @@ -1,71 +0,0 @@ -from typing import Any -from src.physics.collider import Collider -import models.cube # default model - - -class BlockType: - # new optional model argument (cube model by default) - def __init__( - self, texture_manager, name="unknown", block_face_textures={"all": "cobblestone"}, model: Any = models.cube - ): - self.name = name - self.block_face_textures = block_face_textures - self.model = model - - # create members based on model attributes - - self.transparent = model.transparent - self.is_cube = model.is_cube - self.glass = model.glass - self.translucent = model.translucent - - # create colliders - - self.colliders = [] - - for collider in model.colliders: - self.colliders.append(Collider(*collider)) - - # replace data contained in numbers.py with model specific data - - self.vertex_positions = model.vertex_positions - self.tex_coords = model.tex_coords # to deprecate - self.tex_indices = [0] * len(self.tex_coords) - self.shading_values = model.shading_values - - def set_block_face(face, texture): - # make sure we don't add nonexistent face - if face > len(self.tex_coords) - 1: - return - self.tex_indices[face] = texture - - for face in block_face_textures: - texture = block_face_textures[face] - texture_manager.add_texture(texture) - - texture_index = texture_manager.textures.index(texture) - - if face == "all": - for i in range(len(self.tex_coords)): - set_block_face(i, texture_index) - - elif face == "sides": - set_block_face(0, texture_index) - set_block_face(1, texture_index) - set_block_face(4, texture_index) - set_block_face(5, texture_index) - - elif face == "x": - set_block_face(0, texture_index) - set_block_face(1, texture_index) - - elif face == "y": - set_block_face(2, texture_index) - set_block_face(3, texture_index) - - elif face == "z": - set_block_face(4, texture_index) - set_block_face(5, texture_index) - - else: - set_block_face(["right", "left", "top", "bottom", "front", "back"].index(face), texture_index) diff --git a/community/src/renderer/shader.py b/community/src/renderer/shader.py deleted file mode 100644 index df6b454a..00000000 --- a/community/src/renderer/shader.py +++ /dev/null @@ -1,76 +0,0 @@ -import ctypes -import pyglet.gl as gl - -import glm - - -class ShaderError(Exception): ... - - -def create_shader(target, source_path): - # read shader source - - with open(source_path, "rb") as source_file: - source = source_file.read() - - source_length = ctypes.c_int(len(source) + 1) - source_buffer = ctypes.create_string_buffer(source) - - buffer_pointer = ctypes.cast( - ctypes.pointer(ctypes.pointer(source_buffer)), ctypes.POINTER(ctypes.POINTER(ctypes.c_char)) - ) - - # compile shader - - gl.glShaderSource(target, 1, buffer_pointer, ctypes.byref(source_length)) - gl.glCompileShader(target) - - # handle potential errors - - log_length = gl.GLint(0) - gl.glGetShaderiv(target, gl.GL_INFO_LOG_LENGTH, ctypes.byref(log_length)) - - log_buffer = ctypes.create_string_buffer(log_length.value) - gl.glGetShaderInfoLog(target, log_length, None, log_buffer) - - if log_length.value > 1: - raise ShaderError(str(log_buffer.value)) - - -class Shader: - def __init__(self, vert_path, frag_path): - self.program = gl.glCreateProgram() - - # create vertex shader - - self.vert_shader = gl.glCreateShader(gl.GL_VERTEX_SHADER) - create_shader(self.vert_shader, vert_path) - gl.glAttachShader(self.program, self.vert_shader) - - # create fragment shader - - self.frag_shader = gl.glCreateShader(gl.GL_FRAGMENT_SHADER) - create_shader(self.frag_shader, frag_path) - gl.glAttachShader(self.program, self.frag_shader) - - # link program and clean up - - gl.glLinkProgram(self.program) - - gl.glDeleteShader(self.vert_shader) - gl.glDeleteShader(self.frag_shader) - - def __del__(self): - gl.glDeleteProgram(self.program) - - def find_uniform(self, name): - return gl.glGetUniformLocation(self.program, ctypes.create_string_buffer(name)) - - def uniform_matrix(self, location, matrix): - gl.glUniformMatrix4fv(location, 1, gl.GL_FALSE, glm.value_ptr(matrix)) - - def use(self): - gl.glUseProgram(self.program) - - def stop(self): - gl.glUseProgram(0) diff --git a/community/src/renderer/texture_manager.py b/community/src/renderer/texture_manager.py deleted file mode 100644 index 6fb7952b..00000000 --- a/community/src/renderer/texture_manager.py +++ /dev/null @@ -1,63 +0,0 @@ -import pyglet -import logging - -import pyglet.gl as gl - -import src.options as options - - -class TextureManager: - def __init__(self, texture_width, texture_height, max_textures): - self.texture_width = texture_width - self.texture_height = texture_height - - self.max_textures = max_textures - - self.textures = [] - - self.texture_array = gl.GLuint(0) - gl.glGenTextures(1, self.texture_array) - gl.glBindTexture(gl.GL_TEXTURE_2D_ARRAY, self.texture_array) - - gl.glTexParameteri(gl.GL_TEXTURE_2D_ARRAY, gl.GL_TEXTURE_MIN_FILTER, options.MIPMAP_TYPE) - gl.glTexParameteri(gl.GL_TEXTURE_2D_ARRAY, gl.GL_TEXTURE_MAG_FILTER, gl.GL_NEAREST) - - gl.glTexImage3D( - gl.GL_TEXTURE_2D_ARRAY, - 0, - gl.GL_RGBA, - self.texture_width, - self.texture_height, - self.max_textures, - 0, - gl.GL_RGBA, - gl.GL_UNSIGNED_BYTE, - None, - ) - - def generate_mipmaps(self): - logging.debug(f"Generating Mipmaps, using mipmap type {options.MIPMAP_TYPE}") - gl.glGenerateMipmap(gl.GL_TEXTURE_2D_ARRAY) - - def add_texture(self, texture): - logging.debug(f"Loading texture textures/{texture}.png") - - if texture not in self.textures: - self.textures.append(texture) - - texture_image = pyglet.image.load(f"textures/{texture}.png").get_image_data() - gl.glBindTexture(gl.GL_TEXTURE_2D_ARRAY, self.texture_array) - - gl.glTexSubImage3D( - gl.GL_TEXTURE_2D_ARRAY, - 0, - 0, - 0, - self.textures.index(texture), - self.texture_width, - self.texture_height, - 1, - gl.GL_RGBA, - gl.GL_UNSIGNED_BYTE, - texture_image.get_data("RGBA", texture_image.width * 4), - ) diff --git a/community/src/save.py b/community/src/save.py deleted file mode 100644 index 703eb3c5..00000000 --- a/community/src/save.py +++ /dev/null @@ -1,116 +0,0 @@ -import nbtlib as nbt -import base36 -import glm -import logging - -from src.chunk.chunk import Chunk, CHUNK_HEIGHT, CHUNK_LENGTH, CHUNK_WIDTH - - -class Save: - def __init__(self, world, path="save"): - self.world = world - self.path = path - - def chunk_position_to_path(self, chunk_position): - x, _, z = chunk_position - - chunk_path = "/".join( - (self.path, base36.dumps(x % 64), base36.dumps(z % 64), f"c.{base36.dumps(x)}.{base36.dumps(z)}.dat") - ) - - return chunk_path - - def load_chunk(self, chunk_position): - logging.debug(f"Loading chunk at position {chunk_position}") - # load the chunk file - - chunk_path = self.chunk_position_to_path(chunk_position) - - try: - chunk_blocks = nbt.load(chunk_path)["Level"]["Blocks"] - - except FileNotFoundError: - return - - # create chunk and fill it with the blocks from our chunk file - - self.world.chunks[glm.ivec3(chunk_position)] = Chunk(self.world, glm.ivec3(chunk_position)) - - for x in range(CHUNK_WIDTH): - for y in range(CHUNK_HEIGHT): - for z in range(CHUNK_LENGTH): - self.world.chunks[glm.ivec3(chunk_position)].blocks[x][y][z] = chunk_blocks[ - x * CHUNK_LENGTH * CHUNK_HEIGHT + z * CHUNK_HEIGHT + y - ] - - def save_chunk(self, chunk_position): - logging.debug(f"Saving chunk at position {chunk_position}") - x, y, z = chunk_position - - # try to load the chunk file - # if it doesn't exist, create a new one - - chunk_path = self.chunk_position_to_path(chunk_position) - - try: - chunk_data = nbt.load(chunk_path) - - except FileNotFoundError: - chunk_data = nbt.File({"": nbt.Compound({"Level": nbt.Compound()})}) - - chunk_data["Level"]["xPos"] = x - chunk_data["Level"]["zPos"] = z - - # fill the chunk file with the blocks from our chunk - - chunk_blocks = nbt.ByteArray([0] * (CHUNK_WIDTH * CHUNK_HEIGHT * CHUNK_LENGTH)) - - for x in range(CHUNK_WIDTH): - for y in range(CHUNK_HEIGHT): - for z in range(CHUNK_LENGTH): - block = self.world.chunks[chunk_position].blocks[x][y][z] - chunk_blocks[x * CHUNK_LENGTH * CHUNK_HEIGHT + z * CHUNK_HEIGHT + y] = block - - # save the chunk file - - chunk_data["Level"]["Blocks"] = chunk_blocks - chunk_data.save(chunk_path, gzipped=True) - - def load(self): - logging.info("Loading world") - - # for x in range(-1, 15): - # for y in range(-15, 1): - # self.load_chunk((x, 0, y)) - - for x in range(-4, 4): - for y in range(-4, 4): - self.load_chunk((x, 0, y)) - - # for x in range(-1, 1): - # for y in range(-1, 1): - # self.load_chunk((x, 0, y)) - - for chunk_position, unlit_chunk in self.world.chunks.items(): - for x in range(CHUNK_WIDTH): - for y in range(CHUNK_HEIGHT): - for z in range(CHUNK_LENGTH): - if unlit_chunk.blocks[x][y][z] in self.world.light_blocks: - world_pos = glm.ivec3( - chunk_position[0] * CHUNK_WIDTH + x, - chunk_position[1] * CHUNK_HEIGHT + y, - chunk_position[2] * CHUNK_LENGTH + z, - ) - self.world.increase_light(world_pos, 15, False) - - def save(self): - logging.info("Saving world") - for chunk_position in self.world.chunks: - if chunk_position[1] != 0: # reject all chunks above and below the world limit - continue - - chunk = self.world.chunks[chunk_position] - - if chunk.modified: - self.save_chunk(chunk_position) - chunk.modified = False diff --git a/community/src/util.py b/community/src/util.py deleted file mode 100644 index f44ced21..00000000 --- a/community/src/util.py +++ /dev/null @@ -1,17 +0,0 @@ -import glm - -DIRECTIONS = ( - glm.ivec3(1, 0, 0), - glm.ivec3(-1, 0, 0), - glm.ivec3(0, 1, 0), - glm.ivec3(0, -1, 0), - glm.ivec3(0, 0, 1), - glm.ivec3(0, 0, -1), -) - -EAST = glm.ivec3(1, 0, 0) -WEST = glm.ivec3(-1, 0, 0) -UP = glm.ivec3(0, 1, 0) -DOWN = glm.ivec3(0, -1, 0) -SOUTH = glm.ivec3(0, 0, 1) -NORTH = glm.ivec3(0, 0, -1) diff --git a/community/src/world.py b/community/src/world.py deleted file mode 100644 index a3216eaa..00000000 --- a/community/src/world.py +++ /dev/null @@ -1,605 +0,0 @@ -import ctypes -import math -import logging -import glm - -from functools import cmp_to_key -from collections import deque - -import pyglet.gl as gl - -from src.renderer.block_type import BlockType -from src.save import Save -from src.util import DIRECTIONS -from src.entity.player import Player -from src.chunk.chunk import CHUNK_WIDTH, CHUNK_HEIGHT, CHUNK_LENGTH, Chunk - -import src.options as options -import models - - -def get_chunk_position(position): - x, y, z = position - - return glm.ivec3((x // CHUNK_WIDTH), (y // CHUNK_HEIGHT), (z // CHUNK_LENGTH)) - - -def get_local_position(position): - x, y, z = position - - return glm.ivec3(int(x % CHUNK_WIDTH), int(y % CHUNK_HEIGHT), int(z % CHUNK_LENGTH)) - - -class World: - def __init__(self, shader, player: Player | None, texture_manager, options): - self.options = options - self.shader = shader - self.player = player - self.texture_manager = texture_manager - self.block_types: list[BlockType | None] = [None] - - self.shader_daylight_location = shader.find_uniform(b"u_Daylight") - self.daylight = 1800 - self.incrementer = 0 - self.time = 0 - self.c = 0 - - # Compat - self.get_chunk_position = get_chunk_position - self.get_local_position = get_local_position - - # parse block type data file - - with open("data/blocks.mcpy") as f: - blocks_data = f.readlines() - - logging.info("Loading block models") - for block in blocks_data: - if block[0] in ["\n", "#"]: # skip if empty line or comment - continue - - number, props = block.split(":", 1) - number = int(number) - - # default block - - name = "Unknown" - model = models.cube - texture = {"all": "unknown"} - - # read properties - - for prop in props.split(","): - prop = prop.strip() - prop = list(filter(None, prop.split(" ", 1))) - - if prop[0] == "sameas": - sameas_number = int(prop[1]) - sameas = self.block_types[sameas_number] - - if sameas is not None: - name = sameas.name - texture = dict(sameas.block_face_textures) - model = sameas.model - - elif prop[0] == "name": - name = eval(prop[1]) - - elif prop[0][:7] == "texture": - _, side = prop[0].split(".") - texture[side] = prop[1].strip() - - elif prop[0] == "model": - model = eval(prop[1]) - - # add block type - - block_type = BlockType(self.texture_manager, name, texture, model) - - if number < len(self.block_types): - self.block_types[number] = block_type - - else: - self.block_types.append(block_type) - - self.light_blocks = [10, 11, 50, 51, 62, 75] - - self.texture_manager.generate_mipmaps() - - indices = [] - - for nquad in range(CHUNK_WIDTH * CHUNK_HEIGHT * CHUNK_LENGTH * 8): - indices.append(4 * nquad + 0) - indices.append(4 * nquad + 1) - indices.append(4 * nquad + 2) - indices.append(4 * nquad + 2) - indices.append(4 * nquad + 3) - indices.append(4 * nquad + 0) - - self.ibo = gl.GLuint(0) - gl.glGenBuffers(1, self.ibo) - gl.glBindBuffer(gl.GL_ELEMENT_ARRAY_BUFFER, self.ibo) - gl.glBufferData( - gl.GL_ELEMENT_ARRAY_BUFFER, - ctypes.sizeof(gl.GLuint * len(indices)), - (gl.GLuint * len(indices))(*indices), - gl.GL_STATIC_DRAW, - ) - gl.glBindBuffer(gl.GL_ELEMENT_ARRAY_BUFFER, 0) - - logging.debug("Created Shared Index Buffer") - - # load the world - - self.save = Save(self) - - self.chunks = {} - self.sorted_chunks = [] - - # light update queue - - self.light_increase_queue = deque() # Node: World Position, light - self.light_decrease_queue = deque() # Node: World position, light - self.skylight_increase_queue = deque() - self.skylight_decrease_queue = deque() - self.chunk_building_queue = deque() - - self.save.load() - - logging.info("Lighting chunks") - for world_chunk in self.chunks.values(): - self.init_skylight(world_chunk) - - logging.info("Generating chunks") - for world_chunk in self.chunks.values(): - world_chunk.update_subchunk_meshes() - - del indices - self.visible_chunks: list[Chunk] = [] - - # Debug variables - - self.pending_chunk_update_count = 0 - self.chunk_update_counter = 0 - - def __del__(self): - gl.glDeleteBuffers(1, ctypes.byref(self.ibo)) - - ################ LIGHTING ENGINE ################ - - def increase_light(self, world_pos, newlight, light_update=True): - chunk = self.chunks[get_chunk_position(world_pos)] - local_pos = get_local_position(world_pos) - - chunk.set_block_light(local_pos, newlight) - - self.light_increase_queue.append((world_pos, newlight)) - - self.propagate_increase(light_update) - - def propagate_increase(self, light_update): - """Starts propagating all queued block light increases - This algorithm is derived from the Seed of Andromeda's tutorial - It uses a FIFO queue to queue the pending blocks to light - It then checks its 6 neighbours and propagate light to one of them if the latter's light level - is lower than the former one""" - - while self.light_increase_queue: - pos, light_level = self.light_increase_queue.popleft() - - for direction in DIRECTIONS: - neighbour_pos = pos + direction - - chunk = self.chunks.get(get_chunk_position(neighbour_pos), None) - if not chunk: - continue - local_pos = get_local_position(neighbour_pos) - - if not self.is_opaque_block(neighbour_pos) and chunk.get_block_light(local_pos) + 2 <= light_level: - chunk.set_block_light(local_pos, light_level - 1) - - self.light_increase_queue.append((neighbour_pos, light_level - 1)) - - if light_update: - chunk.update_at_position(neighbour_pos) - - def init_skylight(self, pending_chunk): - """Initializes the skylight of each chunks - To avoid insufferable lag from propagating from the top of the chunks when - most of the heights would be air, it instead runs a simple algorithm - to check where the highest point of the chunk is and propagates skylight from - this height""" - - chunk_pos = pending_chunk.chunk_position - - # Retrieve the highest chunk point - height = 0 - for lx in range(CHUNK_WIDTH): - for lz in range(CHUNK_LENGTH): - ly = 0 - - for ly in range(CHUNK_HEIGHT - 1, -1, -1): - if pending_chunk.blocks[lx][ly][lz]: - break - if ly > height: - height = ly - - # Initialize skylight to 15 until that point and then queue a skylight propagation increase - for lx in range(CHUNK_WIDTH): - for lz in range(CHUNK_LENGTH): - ly = 0 - - for ly in range(CHUNK_HEIGHT - 1, height, -1): - pending_chunk.set_sky_light(glm.ivec3(lx, ly, lz), 15) - - pos = glm.ivec3(CHUNK_WIDTH * chunk_pos[0] + lx, ly, CHUNK_LENGTH * chunk_pos[2] + lz) - self.skylight_increase_queue.append((pos, 15)) - - self.propagate_skylight_increase(False) - - def propagate_skylight_increase(self, light_update): - """Similar to the block light algorithm, but - do not lower the light level in the downward direction""" - while self.skylight_increase_queue: - pos, light_level = self.skylight_increase_queue.popleft() - - for direction in DIRECTIONS: - neighbour_pos = pos + direction - if neighbour_pos.y > CHUNK_HEIGHT: - continue - - _chunk = self.chunks.get(get_chunk_position(neighbour_pos), None) - if not _chunk: - continue - local_pos = get_local_position(neighbour_pos) - - transparency = self.get_transparency(neighbour_pos) - - if transparency and _chunk.get_sky_light(local_pos) < light_level: - newlight = light_level - (2 - transparency) - - if light_update: - _chunk.update_at_position(neighbour_pos) - - if direction.y == -1: - _chunk.set_sky_light(local_pos, newlight) - self.skylight_increase_queue.append((neighbour_pos, newlight)) - elif _chunk.get_sky_light(local_pos) + 2 <= light_level: - _chunk.set_sky_light(local_pos, newlight - 1) - self.skylight_increase_queue.append((neighbour_pos, newlight - 1)) - - def decrease_light(self, world_pos): - chunk = self.chunks[get_chunk_position(world_pos)] - local_pos = get_local_position(world_pos) - old_light = chunk.get_block_light(local_pos) - chunk.set_block_light(local_pos, 0) - self.light_decrease_queue.append((world_pos, old_light)) - - self.propagate_decrease(True) - self.propagate_increase(True) - - def propagate_decrease(self, light_update): - """Starts propagating all queued block light decreases - This algorithm is derived from the Seed of Andromeda's tutorial - It uses a FIFO queue to queue the pending blocks to unlight - It then checks its 6 neighbours and unlight to one of them if the latter's light level - is lower than the former one""" - - while self.light_decrease_queue: - pos, light_level = self.light_decrease_queue.popleft() - - for direction in DIRECTIONS: - neighbour_pos = pos + direction - - chunk = self.chunks.get(get_chunk_position(neighbour_pos), None) - if not chunk: - continue - local_pos = get_local_position(neighbour_pos) - - if self.get_block_number(neighbour_pos) in self.light_blocks: - self.light_increase_queue.append((neighbour_pos, 15)) - continue - - if not self.is_opaque_block(neighbour_pos): - neighbour_level = chunk.get_block_light(local_pos) - if not neighbour_level: - continue - - if neighbour_level < light_level: - chunk.set_block_light(local_pos, 0) - if light_update: - chunk.update_at_position(neighbour_pos) - self.light_decrease_queue.append((neighbour_pos, neighbour_level)) - elif neighbour_level >= light_level: - self.light_increase_queue.append((neighbour_pos, neighbour_level)) - - def decrease_skylight(self, world_pos, light_update=True): - chunk = self.chunks[get_chunk_position(world_pos)] - local_pos = get_local_position(world_pos) - old_light = chunk.get_sky_light(local_pos) - chunk.set_sky_light(local_pos, 0) - self.skylight_decrease_queue.append((world_pos, old_light)) - - self.propagate_skylight_decrease(light_update) - self.propagate_skylight_increase(light_update) - - def propagate_skylight_decrease(self, light_update=True): - """Similar to the block light algorithm, but - always unlight in the downward direction""" - while self.skylight_decrease_queue: - pos, light_level = self.skylight_decrease_queue.popleft() - - for direction in DIRECTIONS: - neighbour_pos = pos + direction - - chunk = self.chunks.get(get_chunk_position(neighbour_pos), None) - if not chunk: - continue - local_pos = get_local_position(neighbour_pos) - - if self.get_transparency(neighbour_pos): - neighbour_level = chunk.get_sky_light(local_pos) - if not neighbour_level: - continue - - if direction.y == -1 or neighbour_level < light_level: - chunk.set_sky_light(local_pos, 0) - if light_update: - chunk.update_at_position(neighbour_pos) - self.skylight_decrease_queue.append((neighbour_pos, neighbour_level)) - elif neighbour_level >= light_level: - self.skylight_increase_queue.append((neighbour_pos, neighbour_level)) - - # Getter and setters - - def get_raw_light(self, position): - chunk = self.chunks.get(get_chunk_position(position), None) - if not chunk: - return 15 << 4 - local_position = self.get_local_position(position) - return chunk.get_raw_light(local_position) - - def get_light(self, position): - chunk = self.chunks.get(get_chunk_position(position), None) - if not chunk: - return 0 - local_position = self.get_local_position(position) - return chunk.get_block_light(local_position) - - def get_skylight(self, position): - chunk = self.chunks.get(get_chunk_position(position), None) - if not chunk: - return 15 - local_position = self.get_local_position(position) - return chunk.get_sky_light(local_position) - - def set_light(self, position, light): - chunk = self.chunks.get(get_chunk_position(position), None) - local_position = get_local_position(position) - chunk.set_block_light(local_position, light) - - def set_skylight(self, position, light): - chunk = self.chunks.get(get_chunk_position(position), None) - local_position = get_local_position(position) - chunk.set_sky_light(local_position, light) - - ################################################# - - def get_block_number(self, position): - chunk_position = get_chunk_position(position) - - if chunk_position not in self.chunks: - return 0 - - lx, ly, lz = get_local_position(position) - - block_number = self.chunks[chunk_position].blocks[lx][ly][lz] - return block_number - - def get_transparency(self, position): - block_type = self.block_types[self.get_block_number(position)] - - if not block_type: - return 2 - - return block_type.transparent - - def is_opaque_block(self, position): - # get block type and check if it's opaque or not - # air counts as a transparent block, so test for that too - - block_type = self.block_types[self.get_block_number(position)] - - if not block_type: - return False - - return not block_type.transparent - - def create_chunk(self, chunk_position): - self.chunks[chunk_position] = Chunk(self, chunk_position) - self.init_skylight(self.chunks[chunk_position]) - - def set_block(self, position, number): # set number to 0 (air) to remove block - x, y, z = position - chunk_position = get_chunk_position(position) - - if chunk_position not in self.chunks: # if no chunks exist at this position, create a new one - if number == 0: - return # no point in creating a whole new chunk if we're not gonna be adding anything - - self.create_chunk(chunk_position) - - if self.get_block_number(position) == number: # no point updating mesh if the block is the same - return - - lx, ly, lz = get_local_position(position) - - self.chunks[chunk_position].blocks[lx][ly][lz] = number - self.chunks[chunk_position].modified = True - - self.chunks[chunk_position].update_at_position((x, y, z)) - - if number: - if number in self.light_blocks: - self.increase_light(position, 15) - - elif self.block_types[number].transparent != 2: - self.decrease_light(position) - self.decrease_skylight(position) - - elif not number: - self.decrease_light(position) - self.decrease_skylight(position) - - cx, cy, cz = chunk_position - - def try_update_chunk_at_position(chunk_position, position): - if chunk_position in self.chunks: - self.chunks[chunk_position].update_at_position(position) - - if lx == CHUNK_WIDTH - 1: - try_update_chunk_at_position(glm.ivec3(cx + 1, cy, cz), (x + 1, y, z)) - if lx == 0: - try_update_chunk_at_position(glm.ivec3(cx - 1, cy, cz), (x - 1, y, z)) - - if ly == CHUNK_HEIGHT - 1: - try_update_chunk_at_position(glm.ivec3(cx, cy + 1, cz), (x, y + 1, z)) - if ly == 0: - try_update_chunk_at_position(glm.ivec3(cx, cy - 1, cz), (x, y - 1, z)) - - if lz == CHUNK_LENGTH - 1: - try_update_chunk_at_position(glm.ivec3(cx, cy, cz + 1), (x, y, z + 1)) - if lz == 0: - try_update_chunk_at_position(glm.ivec3(cx, cy, cz - 1), (x, y, z - 1)) - - def try_set_block(self, position, number, collider): - # if we're trying to remove a block, whatever let it go through - - if not number: - return self.set_block(position, 0) - - # make sure the block doesn't intersect with the passed collider - - for block_collider in self.block_types[number].colliders: - if collider & (block_collider + position): - return - - self.set_block(position, number) - - def toggle_AO(self): - self.options.SMOOTH_LIGHTING = not self.options.SMOOTH_LIGHTING - for chunk in self.chunks.values(): - chunk.update_subchunk_meshes() - - def speed_daytime(self): - if self.daylight <= 480: - self.incrementer = 1 - if self.daylight >= 1800: - self.incrementer = -1 - - def can_render_chunk(self, chunk_position): - if self.player is None: - return False - - return ( - self.player.check_in_frustum(chunk_position) - and math.dist(self.get_chunk_position(self.player.position), chunk_position) <= self.options.RENDER_DISTANCE - ) - - def prepare_rendering(self): - self.visible_chunks = [ - self.chunks[chunk_position] for chunk_position in self.chunks if self.can_render_chunk(chunk_position) - ] - self.sort_chunks() - - def sort_chunks(self): - if self.player is None: - return - - player_chunk_pos = self.get_chunk_position(self.player.position) - self.visible_chunks.sort( - key=cmp_to_key( - lambda a, b: int( - math.dist(player_chunk_pos, a.chunk_position) - math.dist(player_chunk_pos, b.chunk_position) - ) - ) - ) - self.sorted_chunks = tuple(reversed(self.visible_chunks)) - - def draw_translucent_fast(self): - gl.glEnable(gl.GL_BLEND) - gl.glDisable(gl.GL_CULL_FACE) - gl.glDepthMask(gl.GL_FALSE) - - for render_chunk in self.sorted_chunks: - render_chunk.draw_translucent(gl.GL_TRIANGLES) - - gl.glDepthMask(gl.GL_TRUE) - gl.glEnable(gl.GL_CULL_FACE) - gl.glDisable(gl.GL_BLEND) - - def draw_translucent_fancy(self): - gl.glDepthMask(gl.GL_FALSE) - gl.glFrontFace(gl.GL_CW) - gl.glEnable(gl.GL_BLEND) - - for render_chunk in self.sorted_chunks: - render_chunk.draw_translucent(gl.GL_TRIANGLES) - - gl.glFrontFace(gl.GL_CCW) - - for render_chunk in self.sorted_chunks: - render_chunk.draw_translucent(gl.GL_TRIANGLES) - - gl.glDisable(gl.GL_BLEND) - gl.glDepthMask(gl.GL_TRUE) - - draw_translucent = draw_translucent_fancy if options.FANCY_TRANSLUCENCY else draw_translucent_fast - - def draw(self): - self.c = 0 - daylight_multiplier = self.daylight / 1800 - gl.glClearColor( - 0.5 * (daylight_multiplier - 0.26), - 0.8 * (daylight_multiplier - 0.26), - (daylight_multiplier - 0.26) * 1.36, - 1.0, - ) - gl.glUniform1f(self.shader_daylight_location, daylight_multiplier) - - for render_chunk in self.visible_chunks: - render_chunk.draw(gl.GL_TRIANGLES) - - self.draw_translucent() - - def update_daylight(self): - if self.incrementer == -1: - if self.daylight < 480: # Moonlight of 4 - self.incrementer = 0 - elif self.incrementer == 1: - if self.daylight >= 1800: - self.incrementer = 0 - - if self.time % 36000 == 0: - self.incrementer = 1 - elif self.time % 36000 == 18000: - self.incrementer = -1 - - self.daylight += self.incrementer - - def build_pending_chunks(self): - if self.chunk_building_queue: - pending_chunk = self.chunk_building_queue.popleft() - pending_chunk.update_mesh() - - def process_chunk_updates(self): - for chunk in self.visible_chunks: - chunk.process_chunk_updates() - - def tick(self, delta_time): - self.chunk_update_counter = 0 - self.time += 1 - self.pending_chunk_update_count = sum(len(chunk.chunk_update_queue) for chunk in self.chunks.values()) - self.update_daylight() - self.build_pending_chunks() - self.process_chunk_updates() diff --git a/community/textures/aqua_cloth.png b/community/textures/aqua_cloth.png deleted file mode 100644 index d24b7d5bb9c32347f76b4060a9bd34984deea528..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1193 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 diff --git a/community/textures/bookshelf.png b/community/textures/bookshelf.png deleted file mode 100644 index 1fd85b5e0244d2d6ff03e4b63a9d69dc37b00955..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1070 zcmV+}1kwA6P)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMhFV0oRiU0rr8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0tZP%K~y-)eUm?E6LA#BKl$Z%?KQC$u|=x{-E2S+?P9Zt zpwNi8lsbq=Tk2lzREmRxB2I#X|Ar3MNfZT9!5|JIE*6w4Z6gltHABc%C25jhyvx-g zxl7U{ey4Zu`+kr2d%w>G5)US}s7fh?uIt_>rj_wyBWV$jMX8r*Wsm?p3Wd&HYZJzc^KlgoX1p8--Yboya zml2WPzLp0MpZUUp!3Es1+qQY6w~xT|<)JNrLg8;yK`7MW$J>3+lkr%z;k~`iN+|#` zo4Fg%OxWw`z5Q_B%GDg4;uEX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMh0*i{9{{R308FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0&Yn}K~y-)Ws})zQ&AL#zdf8GCuy6cO|?=gguX$GmqM%% z3W}&z(C6{WR}g#vsVE3SDHeL=g#&mef@m!r(jiGRoSd9tA1^YH(*JU;{jbgX_P@oe zr)z01jL6s)g|&w?KD|QJh$zuBhz;5lbon|PMSk75AyUZV|w7sf2+ zvRFBfFZ(rGLCDWqol-7Cm^7Gj97g(e+9XL+Bp?CuuFXNKOArK{bbOQ$OuIHYTLWM# zO+QWmIBIvvdoBPo83(<*{)p716;m{Z+mA(5IUG!Y`8f}*HIsP>})ct^>=aRI0%mIEB zv)5>khh7AIX50afc}oo#9JV^tdjYK=r0BWST3wVB*jkfwHLV~d@419YJT?O)ae{dL z@4h|f&y7ZF-B?U?jdYyiZXALrp5GMw$BvMFj+<%5Pso_t(eT8z} z4_E*kt@!-+=u%GtQc8;b{vZc+KVZaS4AgV6tU+zkY-`D69<^Gnu(BeEl8EcJ4aR_! nU<^VDtXpf8jk)qKMnU=yr1ub7$_|*j00000NkvXXu0mjf;IIRe diff --git a/community/textures/brown_mushroom.png b/community/textures/brown_mushroom.png deleted file mode 100644 index fc2245cc85469aff9cc8e807f37ced62f8d5c4fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 634 zcmV-=0)_pFP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ*I$b6uN&o-=8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b08>dsK~y-)V_+BsqhK%qMqCnSW>)-%v5#K4%aA{LH6zgm zz%(Ddau+W4@Z~#(zEyiM)U#kS09hkUGcLe_O9G!JqCrM<(0@+{tN-}aFi~m=014+D U$?nUE7ytkO07*qoM6N<$f)KU?;{X5v diff --git a/community/textures/cactus_bottom.png b/community/textures/cactus_bottom.png deleted file mode 100644 index ca2984b4e6666762cdcc407e97661b845d668cc8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 825 zcmV-91IGM`P)EX>4Tx04R}tkv&MmKpe$iQ>8^J3U(;skfG{gK~%(1t5Adrp;l;o12rOiK+~&c zDiIem*;O&{3IRd%V-yjYS;m|sCE+=~?&0I>U5saWpZjz4syT}RK9P8q8D^DugLrzg zYH;2s4zr@H5}y-~nRG$oN3JU_zi}=&Ebz>*nNH0Uhl#~P2P+-Sil#<9MI2Q%o$`f@ z%PQwB&RV&~TKD8H4CVBdWvu?YAB(MDq^(iq*zGNe%!-9==ddaDdZ}F zkz)ZBXpkL0_#gc4*2+&#xJjWn(EVcDAHzUk7iiXP`}^3oneSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{009w6L_t(I%e9kBQUfs%L!WvkAxXiWb8sWhk#)|&jW`E; z2#^$RvG9B|6bn*#<8oV;EVT_+4guUf-uo|yU!Pvo_KWBJ0UM+_Xj+p3Nn{ot4toFw z0x9@78%Y>&CW=_7hG5fUGdhlG9GOW-lq{r8$pSFU z`XPsQ;&ujkKSQV?Z6MgLk|b&4Wi|MQuy{mpy>`&f2O)U~4500000NkvXXu0mjf Dw9sI1 diff --git a/community/textures/cactus_side.png b/community/textures/cactus_side.png deleted file mode 100644 index b59d492f52510a55d6de2acf768ee20aa55bb975..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1015 zcmVEX>4Tx04R}tkv&MmKpe$iQ>8^J3U(;skfG{gK~%(1t5Adrp;l;o12rOiK+~&c zDiIem*;O&{3IRd%V-yjYS;m|sCE+=~?&0I>U5saWpZjz4syT}RK9P8q8D^DugLrzg zYH;2s4zr@H5}y-~nRG$oN3JU_zi}=&Ebz>*nNH0Uhl#~P2P+-Sil#<9MI2Q%o$`f@ z%PQwB&RV&~TKD8H4CVBdWvu?YAB(MDq^(iq*zGNe%!-9==ddaDdZ}F zkz)ZBXpkL0_#gc4*2+&#xJjWn(EVcDAHzUk7iiXP`}^3oneSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00GZQL_t(I%WacOjuSx)hCjRdmFF}8#DK&;S6~5)xd|uB zo`wlZDa1P20-(Kze52#u6Nk40N%h! zOw1FCH|5}QIC}v6ms4BZ6p&=$@pc%Yx&2$K~s(Q=oZ*zD}9FzXpgSq^}C( zN)Z)woW^;lQAx5aaEk<_Zy-SjBgDAxrP{d_7mMpW&K_z{ID70-v5tX^lyC|l0kira zSduAWAHVzCYRF)8Q7HUKQ98Bqappz6)0Rt6B zwW;{?;b+faP|_3?hkKTFG6BRCX*MG>H(+4L^$!27g4+5*4Y0>X0`R}j=)$$ddnb|` zI!Qr7v}~q5#8RpEzO#6GJ?gQwW^q?Ju1pEd;e>c?F}KLOwNe@W$N4`_Y(R=>T-Ece lKPCy(dymzIRRPBRKMy){(v%YtWy1gf002ovPDHLkV1meez+eCX diff --git a/community/textures/cactus_top.png b/community/textures/cactus_top.png deleted file mode 100644 index f03df7f0ca00da2b5836bcd9678878c8c0e6bef0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1041 zcmV+s1n&EZP)EX>4Tx04R}tkv&MmKpe$iQ>8^J3U(;skfG{gK~%(1t5Adrp;l;o12rOiK+~&c zDiIem*;O&{3IRd%V-yjYS;m|sCE+=~?&0I>U5saWpZjz4syT}RK9P8q8D^DugLrzg zYH;2s4zr@H5}y-~nRG$oN3JU_zi}=&Ebz>*nNH0Uhl#~P2P+-Sil#<9MI2Q%o$`f@ z%PQwB&RV&~TKD8H4CVBdWvu?YAB(MDq^(iq*zGNe%!-9==ddaDdZ}F zkz)ZBXpkL0_#gc4*2+&#xJjWn(EVcDAHzUk7iiXP`}^3oneSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00HSqL_t(I%cYaQZWBQe#(%qe>;JYaK_u%G6e&uP0?|;V z;tlAaqj2e$;5A(O0o?HtK~zyF;sP02iVjC{;rQbC{_NgTTy7H!x=c4av){}&^9{Vv z1VDEZk^}11+$N%=>1Z5>J*w0yNM1{_|!Wk#EM?+q=k^mQ}6)EkGPcdah={MB)i;V?^2`^*j46r zu=~Cyz1a8y{uZ{=73t4=e<<7Oitcd0-M2rOS%T~Y{{8tuz1aQ&=nx8-Qsx(i00000 LNkvXXu0mjfbNJkc diff --git a/community/textures/chest_front.png b/community/textures/chest_front.png deleted file mode 100644 index 5bb4289d0802fbb3103f029cc766945d017b4f7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1079 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 FV1n+_(V+kU diff --git a/community/textures/clay.png b/community/textures/clay.png deleted file mode 100644 index 3670a86755e585cbc5f3d9a9f6e35c76dc2b884f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1203 zcmV;k1WfyhP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ+5^;#U@c;k-8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0*pySK~y-)CDXfd+%_0M;e#Il!RyM>T8d|rNNMw$snX}| zTso0QW9!Z(2!gnzPWx*K3vc7Y5 z^Cy0rK^GE{eNTkl^Xbzi)>z)=XL5}==P0F+b4J1zpjb*$ygq$p^?{rcC1v)q0&qUh zSlx0u{Xx?-bZ$h6qHibUFdaxGFpeX&RHnnowrw=7;dpgK8%^FJ#D&MF?6V`O7Vz9;%;+eDVx4in R@D%_6002ovPDHLkV1f=1CaVAd diff --git a/community/textures/coal_ore.png b/community/textures/coal_ore.png deleted file mode 100644 index c60f980d40caed86794bc7d64758dc5f92a5d125..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 928 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 diff --git a/community/textures/crafting_table_z.png b/community/textures/crafting_table_z.png deleted file mode 100644 index 31de683d4617c4c064c1af45005a6ba6003b4879..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1205 zcmV;m1WNmfP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMk4~R??2LJ#78FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0**;UK~y-)Rgzsu6j2z4pWRj+#~CY~p%S++!X+?M38C^L zF~XlNg1ssV47`diObQBus35x#BZ%m-AP5to2ve#HlUz#*{Mpc56^bp}oGGeVr(L%h zyBK!X{jSc(Ip;a=`<>UbO_A1abT+cSdhbur9o)yG;VCTJ=45Lvmj>Q*>wH_zxl@-P z;|1_5Dyk$Cj_RnAO!wI)y86bkY#V^CzHz$R>q#b)#B_~hGU-CRnT3`xsH#+W_jVR7 zVbI&z%#4}l<6n!r7mwjrQ~<(J9YGLWfDd5c)f51q8>*oQmVy0bnJGO2l5C{;7L;#pxSjt*xIk21H;k^JHJ$(&P%%{Gl zjFMuJl46m@x(eDF0-QUs--TE2D$4?5x<<+$bR~N6p-M9Lnoa6o8ZBXGrB5(^yyGT96Bb>ashDRb^|?k9xyfkEepu_kIygC($Pdr*PLH@J%=DVImlF{=%KZ>m65*f%zgUd z0AjjEII2^tIw~?j5{e2a@a3UOvTG~9yp)b$ZEln^7b4*=q&I7BpD95Qi0K-tBqIm{ z$B#Js&qo*VdA%NnLbCuAiZTk!oVwDwd+TAzJC1T$V{97DFUayD$@yH1` T5WR2T00000NkvXXu0mjf^IaC@ diff --git a/community/textures/crops.png b/community/textures/crops.png deleted file mode 100644 index 9a530f084ef05b162a646a7a35684aad805d040f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1167 zcmV;A1aSL_P)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMq0hJrpiU0rr8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0%%D@K~y-)jgd=hQ&AL!zjJPK(fQU>DK2 zi?|R3pf_Pt%!B1fB6A_eGc^FtU9E6_3ias=LiP(>E@^_e6G zAf&rAEsyn;7yvuj2+4V$BXg@gB!;^=+>c-zF6j}2{JH@^wHPMWud}%kqq|GvclVAd z*j%-IfpFAj``a-`WsO3vi3~t$EDV5U3aSMQEX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQKCGNKhs-T(jq8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0^&(TK~y-)J<`i=<75Da;rBn!dy4&)xM)LVigw~R~dCoE~ z37n>`Yc8%6(q&1v<>MK_{>g+eaI`{8J5=aaXpsVr{+pwf#`x&7kW5xVlM+lY%dH z+f3seZH>e;iqUvMC-UgFd;tDBzUOE(Wvdt9dz#bB1#wdF+4dTN)BOHs!b7q`zq^Q^ zjO%NbkvQv`nFa|a32?}Ru!{F z0YF*ScvcYwhIVLpKS_xf1uu4@CrXxA=>5|fz|#w5RZ~_qfztpSj^=nq@vP?@Zk;Jg~$Z$Fw}?M+x~T6VUYJftg*&tsgY@QlJUg7=e@yIICZgMihl;_UK)ss=s2 z&G7AGKwG^Aul6QbEgAM31P#sjHlx>e4Ev7(9gXI+Ld%Pth}Eh>{P@eCwGe_NTLG}y z@tHjoq|1`BstFs0vZ@*1Bskw-v>;uU+)Ohz)*brbY=%~n&CVlb?_`RSf)BKVvl&VX zw34g^k4Xaz`wgs-=no5fCsVAJeEG72F^bm*x5SGjpKiB^nubMIqNL#4ueSiWxK8-z zY=-#$=ht;v)pQ~c=P9OfPP#0~@`^MoIK5i1I}8b%2Incpw;57Ef88f=8od@+>Z<1I zCS{qI47!diuP|EBZ27$WxW(N(XLPjypcPttE4jE%ct}_1KlX13oM!iV$bDRJIGPhU z&9L9Vvx>vBIm@D?*Y*gU=5RDeNx>(>5Gmk)l>tMW+;QSI00000NkvXXu0mjf2+dvD diff --git a/community/textures/dead_bush.png b/community/textures/dead_bush.png deleted file mode 100644 index ca793d4b0d0b2b96ecf57f1939630e9957c28763..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 739 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 diff --git a/community/textures/dirt.png b/community/textures/dirt.png deleted file mode 100644 index 58d3fac4f98118350a63952cebf8885dbb3aaef6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1059 zcmV+;1l;?HP)EX>4Tx04R}tkv&MmKpe$iQ>7{u2RjsT2vVIah>AFB6^c+H)C#RSm|XfHG-*gu zTpR`0f`cE6RRL;k>@Q#C4j3NMZqtkRU=q6&onSMx0ii6botEPx$x;T)#vvg#t9I72Cnp$zfuRLKS{5( zwAc~Qw+&oew=`uBxZDAvPljyDt`wvx6bium8GTa@=)VPeR=wVu`#607GSpS-1~@nb zMv9cZ=JW2Z_TK(I)9mjDK>u=+__5Q400006VoOIv00000008+zyMF)x010qNS#tmY z4zmCN4zmH{a@Al{?7ma02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00H|+L_t(I%VmX=uU2 zSRo)nK?b{c+oAu4w_f%adD=mk)SEEc9y~2=AdELbO=8`&2qhls`;yN0^uEvgyzlqd zqg|Yzm7&N0h|>aq!1uUci;^7IHr4&*ct+rR)STVMu+`XNG?`;GwgFg`B|jeb`26W3 zMq``6_h>%cVsW=r_tQ`?z7}W~=V#^Rc&1PW{VwucMUyK^asbt*ha%&r)gkabT-ziR znQD?!9LoT}u?$?>WYF&_i8??ty&@DDf$uSz%;~lF0Tl9RG6&!b9sr@pRIMJT1yPdY zSO%fUlu?pJ)x7VM4>WC)I4y8(lfd`T1K(3_$7#V%=R`FO`dtS7u9747Qc@@~>VWzU zAiNpTvJB$1;Bq{}u?(UlSDGc5{G@jD{K;@}w}|{h zz%&%-nzm-(ScWpCYMRtueJGhqcC|MzpAG?ZO;b@8w@Xfs57oe&9v|Y`rec}j{)T6- z`FcHF$0!j(k*PRkguCrms$ONcxOz{N-x77Fb3*TCw2{4Q do9bSI{smh*G@tr71Y7_B002ovPDHLkV1hGs+;so| diff --git a/community/textures/fire.png b/community/textures/fire.png deleted file mode 100644 index ae4a5b91ee10a40d06e3d79ac2b9483513e87d88..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 666 zcmV;L0%iS)P)EX>4Tx04R}tkv&MmKpe$iQ>7vm!4?s5$WWauh>AFB6^c+H)C#RSm|XfHG-*gu zTpR`0f`cE6RRL;k>@Q#C4iONMZqtkRU=q6&onSMx0ii6botEPx$x;UB5&wg#t9I72Cnp$zfuRLKS{5( zwAc~QyA51iw=`uBxZD8-o($QPT`5RYC=`JAGy0|+5V-}qSH0ev`#607GSpS-1~@nb zMv9cZ=JW2Z_TK(I)9mjDL(X!P#jJ+&00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNlirueSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{0044HL_t(I%e7KL4!|G?EByb@-3h}8)g?GDhJsK_jQ}w@ zwL!!gC%~?b0DV^!xB;eyt_HOzP}^6>BP=J-JqirPr0#(4-B$h*Wk$8?EnA(07*qoM6N<$g05i~ A{{R30 diff --git a/community/textures/furnace_front.png b/community/textures/furnace_front.png deleted file mode 100644 index 8059c5affd5004fb841a899147e21a1295752d0d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1238 zcmV;{1S$K8P)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMr17Z$_=Kufz8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0W^Y&Myloh6gW08p#dn4h1= zG)<(G{QUgTZnsILQq=2pj83ORv)Lq<%hB)m$z(DVi$${8ERjfrbUMxV_ctpmE97!H zB9RE&+uMxCW0X=@mSv%o;_dB?rKKgb)|{Q4kw_%aTGQ!ta2$ubyE|4_S6N?QXKrqe zbUMxR^D|Z~7GrH~4aaeKe0-$UYEi4z_!|}$7Wn-9B%96Rx-LNwVDx%D-rwJG9EaD} zS8i@@_!p|xD#ypiG#U-Aude~HT-PNMi6DfS7A6u248y=QO_WlYrioz~_`Z*6n&k6& zMxzlI7Z+GkN`fGuUaupi+6eHEQas^O}4u{;|-&3hn2*Z%8tE>Mg5Cj3GQii>I0<|LI{Kqc%DbQ-KNoKVB0o-0LF+-t=+Dpw*UYD07*qoM6N<$f>IYd AG5`Po diff --git a/community/textures/furnace_side.png b/community/textures/furnace_side.png deleted file mode 100644 index 18aaba2664fa82b790f48507395f6f7af40091b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1190 zcmV;X1X=ruP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMr4TZL=-~a#s8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0)I(FK~y-)ZIew;>P#4hFZwx%MUkpOvaHny&i{$hv>SFQi|nr ziSPSVDiu7>Lkog{;c!T^*b3&W7nXoO{1SeC_P zGC|X{ZPP9$)5q9MJ3aa2$tLtHpY~X1QE4o6QKr5a0JP41-py#rO9& z#_8!P4-XG?IvsLdUteRICIIvKoZa1Bq?F_j4&dqO3Bxcp1mp3T@p#O?6ow&=<7~&1 z$%Im=#CSX=2!c%k%d&{$cxzfL7L-aQgb-w)bP16AQ3nv0Y>`+ths{jB107*qoM6N<$ EfEX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMqFGS_Rm;g^E_8mlb`NNNLC94Lu8F;OPo zffseI%z+~(PBccuCJ-eQ70XXS`rkd+(X)4QW@lZ(dh+Jl?RJ(V2>@xDk|YUPmXW3@ z0ISuCTCGNsBqT|K@B4&dh_36zaZCZ={QMl(brC`^91bZKi~?fubm!o}Lnh zA!(W-6$%B?G-WUtu(Pwn+1VMLPKO`}*xcMC3`6SmIu8#I*tX63`a0!u8N)CLf`Edm zsx+HTWLai5o3UE0s8lL=o=3mmN7FP+)8ydbfGo@C^?F26gb;!#ijX|d!*LvBSw@y+ zK0iN^B_MN!D*asc?gk8Rsbr&IR!_UQNf zEEWsOJt0XFaU7%TI_l z8jXnKm?(+>D3{9&heN_JB#vVylL-L#_xC@H(l=wNR01Ff0`mDh@9*!dRx5-M0NA#T zs;cbo?*sfW7QPuB$KlT{77I2uHt6+w_`XlO-NyHQ#^W)?Vv(z>tKTPnGj45dVObVI z5Fmu$@$r#fuSd07<>KOk@p#O9K1T>a5CpVZEv~PxDaf*ns;W4SgX_9~#bg);-EJ4p j^Zqj?UDwI|-<*E|lVge5sY;m_00000NkvXXu0mjf+-53? diff --git a/community/textures/glass.png b/community/textures/glass.png deleted file mode 100644 index 64cb447f5cabe6b34eacdb7865576e0adf938513..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 728 zcmV;}0w?{6P)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQK9HW1eKiU0rr8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0I^9#K~y-)rBcBS!ypW_PyKa{emX@L=(Je?F+@I59+@FR z{OmpwOMoCD=}Aa7z7yvYEFwxf0C3u$!AByP5CEq&0QNEO%d;*sQTk$9yU^!^MMTZI zx#)olqU$nmE1ZeTTwDl;q6j0nj4%h;Ln&DFASdT+5*LU(lPj3yshAPe?9^K78DEDTm+pi)~NqYrG%ig_@_4de)o(0000< KMNUMnLSTXry*DNR diff --git a/community/textures/gold_block.png b/community/textures/gold_block.png deleted file mode 100644 index c6c257748db5a193d122fbe97d5bd45d77dbcb77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1049 zcmV+!1m^pRP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMgBtV=mLjV8(8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0rE*iK~y-)Ws|{<97PaBUu4ycn_VPd5Euywi3?o#1iqQy z@dp4FvV@J-J2Tx~6~Uorxi~LXN@b-YUq|7-0`<)UFCk$1FM^H+ zDdbQ!P&P6*CM)p@b)i@BMM#sX0v9nv0k6P@6#A(F3(=KMfcy>m4(AW>MzsP@NJj`% zB#?w8V1PpH6&;zVk^D)0{&YxKPWNF9m>|*woFO4GM@P}8Cesj$TFwA?45~Gdfq_)) z>`rBEbI>JITJFf!!~Zi$3H5=+8X`R zsEhDzW4~==+v#M1oI&lV_DUXp044_??q?_h4t>6+FN3G^dpew<9u8=yUmyc9iF{{p zn5VL%7fJI*ZYzFX>CiwY2%y}R7|D=%U#F1*`;~dQFt0bVt#}>uvZ;iQHllx-ObDnNiZ~=0JjvJ?&mYlxr8A*I0kY|^B7dSXkJSx< z1U~*kIm8pMD_n1kbt7XUhq({*&)eT}xC(HHk9&*poQR_J#^V^&z0SjUn2hirk=99^ T3#U3Z00000NkvXXu0mjfr{Bx* diff --git a/community/textures/gold_ore.png b/community/textures/gold_ore.png deleted file mode 100644 index d5221fe3c5a89b4ebc0f4f32b14e8c51bde308b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1008 zcmVEX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ&1mQ5uqyPW_8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0m(^3K~y-)g_A#P8$l4oe$*) zX&jtRA0bU3g&G?n47U&yIk<5M$W5Aj16OgEkixwRgSk{zv5>2@g%)Ipq!h}oPk%zD zn_=heoA+iaS(YuFbCg2}fs_(}JkLqf6l*Qp-bL#T>k-E>08&b%l;nAiQVIa)+!CND zihzFHyQcfT832+b!5D)O0)Vr#SIou(-hF(65Q0jUWeX`K*4ofi6a`8tv~F>Gen5ZN z-k|T92LJ$L4F8HGNj7SEo)bCeaLyrw2sE|Uz*qM7zaxa8C<;2APN)G)CKHrWL>}2% z8yaWhJphh&Zs-r&D5aQ<_xSzeh9r5t!l066*}@mL&FO#hZj|Q-mM&=BVm2P|w)cQE zO;=R+tWHmVZUwJwTO=PRC(pS(KM48ZC21Yil<+8p=|lR zX0xf|IA%JXQmt0G_;#Q9d>-;fqd~o1$68Cb`-sQCK5#XCO08C7G#U{pr8dMX=UTUb zmw(+E5IuXy8$NS*xrJVdnm@y#jQ!a}hM~;`-(LuZ`;s<*O7zEH`o8^E6F2 e#9BXR5BvwuH|ULHam)$;0000Ho98? diff --git a/community/textures/grass.png b/community/textures/grass.png deleted file mode 100644 index 89ffa14d525908f4060cc263e101e865a9833485..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1349 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 diff --git a/community/textures/grey_cloth.png b/community/textures/grey_cloth.png deleted file mode 100644 index 4dc157726815c38f7c2fe287fae12bdf16f1138c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1055 zcmV+)1mOFLP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMf7)0Ix2LJ#78FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0r*KoK~y-)Rg+t8>o5#Nk0?r(V;3n}WHsIYcIqIp9Y6HA zAHEivZ;I66%+UP&{1g!(#)ydEy+>7<=NS>fIfsbwd_EBoLI?mX%R_1>3mF~%@W6Cy&}wxpD>){;`9ZCgZyoHGDj*8#Ba z`#}(6B*sVxp$;mgpsIurn5GG9?HhWGk&llLVvMLU25T+zJmbBmX&L|?j|VwtLI_xE zdA(l580q^SRb?24gWxQ9?{UsCO%vO;;k~cu<2VvRz&Ten5D`=r{rvoV6VH2(_nuM; z#u!wU>-AdEzrVi$*tU(75;~3}Ky{&%Le3fI96%K}gn+8DEDHdtdQhA@-|u%+m9}lk zIoC!J!5G7`ENt7x<#HjV#Ow7s2CeH_Q9}p}!+?m;G!3fCx~?=$Q(ZX4?)(05t8H5V za?X@exZQ5V7|A)4bEfM$N-2!vh_x0GA*IAH498k$M9)>8&nEyO1Vn^sngHr5f9wCr zwKj?f*XtE)E%*EV&G++GZns+v)HF?ph&ku#LX44p-w7d*QeqrOx~{9L&+`m`_nxn> zFVs0lDTQTONGa7uV+>8x(Dyz2zQ5UbCNt-Z{{H@=s`W_z9@QD~loHN4RJCeyxm+;D Z@DH|_F1Lcb_Ba3l002ovPDHLkV1m>p*`WXc diff --git a/community/textures/ice.png b/community/textures/ice.png deleted file mode 100644 index d17fe06e2e760daddafc814f08fe497150bf1826..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmV;V0$crwP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMg0+Nxcz5oCK8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0DVbBK~y-)rINuBfG`LI@ruyS(u$UlE_`ce+JwGTWFWwV zFWk+sFwEPvQb(cHoW`U(*3uFoO4~|=C~a#F)LA#+&M@BP4b7YY0000< KMNUMnLSTY|f+3Lr diff --git a/community/textures/indigo_cloth.png b/community/textures/indigo_cloth.png deleted file mode 100644 index 59c1ae01f00f9a325bdc1be06281a392d64d8360..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1112 zcmV-e1gHCnP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMfB7)M{wEzGB8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0x?NMK~y-)J(F8*BR3F5Pd&(f$o6P3K#&BphO8s|UxqQr zNV3dsvH8dc1^Q|-Z8*qBqtwP69W&u$I{+{h*4g>k4ot=wAUz7DHol)Ga%;G$(7TXwA(}D;1K^S} z*X`gG2b0h3Ah*Wb9C1_L?>n`2{Nr&@YiA0^6pfGVV9S*`D6=c=+3XaJ$&5?N%&sU9 zgW-R?%wOa#{kV^e=cOf{3u^!d@CLlT%ygo}W3`b3sIy%vdJl z{kmf+EWwDbY)55rWqk_Ww#*cabBLqCX$b(-+G!1beqYJ0QER97&g&BBy>m$!H^pt_ z3mxP zZc1$(5#jIi`W5l(cHmPmdhfig5fdS|MlOw03>0fzw}ZFY32vAPw{19>C+E+%8IL|3 zq(`B)&N>guDq|DRYvfTYX&>VY&*e*dp|pnoy6?CuuS*~wja$mND(mc+48__;Qr-27 e$;<4BIR68*fH6^t$4QF-0000EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMgEKWzKaR2}S8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0XRuSK~y-)rISIf@-Pg9KQ{>yY6}tq4#EA`oC1k+K+}*$ zBz}uuRE^+YJl^aaC-#iTk@NYiAp}GO=N!&CthI;;s>%x@g7+Q~sm^TIb(~Ho0Gg)3 z7*jo-riuUIdc9&(N|aInD5daxKKTvoFbu>P=OR_o+A5x=300l%dhfA)-?Q88D5cEQ zo2IGsKOPSNR;yK2uyD?^#uw>-D$8I(o_WS+3Vaw^Klq$N*7@%$2e-ga+ zU(r`p?Co~@XyeO;7o!;CoGYbZj3I=8-EOxWk4H)=s4B*oszc717~@A5*6TG^RsSX- prNrfOc^jar&I`5tol7Yq!Vk>K$XB>j9oYZ?002ovPDHLkV1l}hf@J^z diff --git a/community/textures/iron_door.png b/community/textures/iron_door.png deleted file mode 100644 index e00dc8df6130a0dce64873d399bd2bbef16004e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1022 zcmVEX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMsEtU1y>i_@%8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0oO@HK~y-)ZIeM#B_R+*9|Z`82k;t(CvatixAGPq!9%#x zg@zY#;X=Qmzv-rdnuP5Z56jeoKR$^{%Z?%+ywU!V9F-DG$j}Z}CYqZu75v;X{ z2*#Lk_WM2V^z;-FK~-7Tl^7$&7+Pzis6$n$wT=d_udg_3E!J96N*H5UmIVM~3?T$^ z&Ib*aW#Q!Hgw`4WE~SKXj#3I&S67A&9v>ey=lmo7@bI8HXG$r^&CShsC+GMd&N)H| zKjJY)y!XTyk@NF&LI{*nek7{u7du8&of6yN2HWcRd&1Gcxfx5G5=)n-lMAIoN+NmoO2jsxVX4D5bOE*SwB8LxV*eP zh(A3&>3+XQM3By<*7~c6TOV|Y2;Ted6QQ5qMBI+PZO~eyl!CdtyVFh~#(1E*F@|}b zi7^iKbI#OSnWpL6iCqI#9XqeJVy>`fZlKR`1(cmId!U-g{j4_t)1K^E@9=vDT7v zW}au(b)}Sos^YyL6kQ*6``fIwBeAc!Qxg&1-`@u%`}X#BeRg)nvMi`7DJ7<9VwxsW sO6+z!N-3=CN^1@09L_mDKR*HZ0~{1Adb5oI7ytkO07*qoM6N<$g0|ww-T(jq diff --git a/community/textures/iron_door_bottom_half.png b/community/textures/iron_door_bottom_half.png deleted file mode 100644 index 283d896591d54e5982fcea76f2ae3892bcb8162e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1011 zcmVEX>4Tx04R}tkv&MmP!xqvQ>7vmL5qkuWT@g`K~%(1t5Adrp;l*{h@IUxHTPr^??j?oeK>Lg1d<+4hU7%idobO}DshQiya5gl zf#CvWulc;Yqjhfo-f7J52YnB6t3iyFQvd(}24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2jvGA5*Gm=DL32z000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0005XNkl8T zmdDEsKMg+kfp#Af2Sj&KRb803x3~WK`btWP%jJSG1`z>ZSr)#&zF3xp-aD-|dhaaD z!tHir+cwO{$48Gb(tAfl2q6H>;*=60gn7<6(|aez$hK`bV+_Wa`9h2l0Ambe{rvo( zs;DaGdE&jNwT7zVVvHQeK`CVdjqRKx#z-jzRh_`CHGn^W5CW=7@0}0=z4uvUj3MXD z<#M6-PALWNJ?pv>W5hX!tF@x4T}7-Oil z(puv<4n$;{`u+VqCEZKh_Z_$I`y9_`nDqWl;okKS0@hkY1m_&`{{B8`d+#3#y!UfD zAq1YDp0L)kuItQ=dwF@8vu>@?TBFuF+5Df6k;wBrNh#r;pPy%wh)nI)+PR%`voVB# zF@|MX{&FxPDED|;{zNI|55PHxF^1zfrip{Hh;W|g%*VJJKyKT%`B{d> h@udgISoini{0p2@qwX8Vosa+k002ovPDHLkV1gH1&F}yK diff --git a/community/textures/iron_ore.png b/community/textures/iron_ore.png deleted file mode 100644 index 001beee9108a7dc0353afa34078ab2ce4ef3afd9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1007 zcmVEX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ%IM+mhVgLXD8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0mw;2K~y-)eUq_j8$l3;KVc!x*^6=k!Gc$iH0C1QD7C6o zaT`*pP97j{aCs0tLi(gPs$&RPtW!7#cfuzST9aEvg)OB}c6~aDOgGESzyJLIOe0B> zjkT6)2qB1~2mq}$aU5fe;ZR+(-cXM)3;~Fuh$xECS|gni{TCr4b~ zfs~SKeZ_D4XNQT_nnsc&8~0GR$wgU~-i_+~z*d7{ze6^g^W}R<9LGDVJ62zR-5&&R z99kq79|td(++;ogg+`aN`?eyzNK5Uhi`lhOAaA zTCEn7Tg!UA_IbD4rQL30jN#p@ko(1y)p3U)2uRbErj&9|ylOt|cX;w#vRpLDW^c! dqJGW}_%BPP`}G-s93ub#002ovPDHLkV1g=Uyl?;j diff --git a/community/textures/jukebox.png b/community/textures/jukebox.png deleted file mode 100644 index 4f9dfca9e8d2b6cd8901297163e13a0097214654..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1191 zcmV;Y1X%ltP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMu5pLU?vj6}98FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0)R(SI(=xUVfH4N8b-MrC2EmX_X|}+#)kTVyK};h|HYw&$M*m!Jas~X!2q#xSYQgI- zmsm-_=HTQ9I;%K1`GH|XyVGacnWgIntlgTY>jvD&TeL5`EII|8T=FVQYr|NMky3Hf z&N3Rs+_bZ}gCSxX(eZquFreKVpe8ZhFhUN7#8P4-uq;au>M1*wJM0}_uwA}O-xN?~Pen}yOGjdPFZPgeNY?6AAF!Mmd~o>rFF|J-Ez;cY$~owB>NLGv=;RqZhg zr8zRTjb)T3mNLcI?hTNGA?@Da8YfrSui~+k7^Sg{!Tg(x z_uqe}*st<3#UcumaNvdkZQtXx*Qf1!^rt%IqV0RM`~Yt}#2pL)IPLXu!yx&_jBVrO z3LKyHsaMx&UIx6ZuBX@!PdYrUEOC6+=lSLuZ$CAuSJ!cJg+#SRY1A}M|NRQ%|8&vy zC2A6*raIAqur2b%Ji9v;8s{GMTA4TB&ZyVQsV@HXFRH6Fnl19he4+zm3~m?@g#q1A z0uU*Y>fp9BpX#75qeKVc2saEc#vnEyZJ1}Pi%h379h!yG8~|<@Tw6Q20@-Zl_pmAU zzjhE0?k}5CAt6KnS|r^qW6(k%j7bX{AyC?2TS<;KnqLT-jKYZ2-L(J!002ovPDHLk FV1fXeBQO8} diff --git a/community/textures/jukebox_top.png b/community/textures/jukebox_top.png deleted file mode 100644 index ceb81f2c8168b43d24e6098eb2f87cb3bbfa4191..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1031 zcmV+i1o-=jP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMu8;%ZgtpET38FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0pLkQK~y-)b&@-78!-@uKQ6gXNf0a>K~w}V^3EC3<`_9% z4v`Dw3@K7LP2fgWuzJwqa>;SQ)y9f!RwQQTpP7%p`t9- zE_yNnLP}ZA7hu;X znjGgGWqBNRe2QD0T6slK2SQNYAT9>K>^&h>obA7;Kxan@2Hw8`9MTi z?Y7KfPBER043>ifkG4K?7=2(pB7#v$k>?FJ){fw=2BG797htv9GB0cLJpD!<14?aB zAKzTdw64>hKvXI@UWBL=N@Nrhr3g{bS;~nLc>tPo-aUKZ`>p^0002ovPDHLkV1imZ B(EI=Z diff --git a/community/textures/ladder.png b/community/textures/ladder.png deleted file mode 100644 index 3f0a787730fbac4f294c9c3d630c73404f191c52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 996 zcmVEX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMs1lLDEhX4Qo8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0li5?K~y-)jgwDn6G0eCXC#OBbZ zEvQA}T7;5bn`1AY{Q^1m`K$A?hI;OrZzrPg-#at!!!z)Ay?MPRik2w|S^K+N;#J|H%qaln(uM#izda|vHVZ%^Ist&L>$17i z>EO86eEM?5F*js!^%cgHPMeo5EVU z7dpar-W1QW(=rzs6xqyO;*)w(F+BfGF92NMqg>h$0S}%$n#0hp zIQVcrmchV_e(sj^Kr#TtcgN-U?At#X46~99tXzuuWbD5@P}RtI544Dec|Xd`R6=@i zvra@OaNO(h9;6pyR4Ed+YFZ=;C+{u}T S&*K{a0000EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ(6~w`MkpKVy8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0PIObK~y-)b(75v!ypWWzed@IJ-PsgOvj-I7U&invJVnH z1jj!#mMkF*_IuCvtHDTx%f3K`6SX9Ve8s@W>6y{{^vvj7-q7>?Cd3uf;C4oy) z6hXsRYY}Z>?ASiPRkT!tm{z#&bP>@(%mJzqc0r3E$f3fVhkFW-FqI`D2pzC(S`Zrk z+Q$CS>!*?Kk-{;>Vx7Dc>3wwR0QS==UIX`R65AwZE4Mh}$%uGXzvl5Xzz;=`M~mmA Rt1SQk002ovPDHLkV1m+|RCoXY diff --git a/community/textures/leaves.png b/community/textures/leaves.png deleted file mode 100644 index 858664e11ad1091dc240cad4703f466e8c862f26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1269 zcmVEX>4Tx04R}tkv&MmKpe$iQ>7{u2RjsT2vVIah>AFB6^c+H)C#RSm|XfHG-*gu zTpR`0f`cE6RRL;k>@Q#C4j3NMZqtkRU=q6&onSMx0ii6botEPx$x;T)#vvg#t9I72Cnp$zfuRLKS{5( zwAc~Qw+&oew=`uBxZDAvPljyDt`wvx6bium8GTa@=)VPeR=wVu`#607GSpS-1~@nb zMv9cZ=JW2Z_TK(I)9mjDK>u=+__5Q400006VoOIv00000008+zyMF)x010qNS#tmY z4zmCN4zmH{a@eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00PZPL_t(I%Vm>IZxdG(hMzm0phn4Piu{QZlSFbFiui~V zLYnL(kn2=WR6HpgOEPz4^X@eArg8B#g3rf@-3#zJussd2~YMMfdVPU{zoH+K_ z9yiP+_F-XpLY2F^=jy)ieb3QzIWXHV0ArOw`8eAvUEg&HZ>{9b*#ByPj*A@vkSZlb zvuzsyv)yD<(I7LCQClXq_@c!>0tC+l1>m?lA}732@jMTJyWd;ut{>jpCIG#sdS$#i zB>SyK{n5*W9I^W)F`bYvSB7QZ!<_=~#eaJxRZ5E1H27`ryaGu7kXH429p~990ES_( zmJMLrHuZX)m6a6$YPA}xFEuoPPZs)Q->dih*!prCi`N4HcrO%{N`?G%Uj5Yer_!{> zo8`2NZQBh4(=;ikT>wI7Lt7OaO*YM=?#4+aQKv zPvVnJ1otWX)Cw+Lj-u85i<8J zn&N{~J2>+1usDu`mbqs!JF^79U)L9LU6=W*^C}Ps@avvOs^emZ+)VzhbY1r$Dpra( zjze}bt4K^IHjvhJvdf>v;o@#dm6HCQ_+(r@n;Tfyj8z7Gluvl08_dQkgT5eDO3KLX zZUKmV9g)Mu-J<1Y8z{H5v`~8T8i1qa0XgoD2*8YSUo~;h<#M#PwyuM;x{BUBxN~KJ z-cQ>Ba9x+Bxw4-keZv8uy&B}f%mT-pJyNUH_}P4@v{$zpsWTH9mA>K7bGb*BA36L! z`cyRyg25o+b74_Rk)O^hUDv5R^@vZ#g#)?wH}rk*pT=Bb7h;ksC1t!iB+>IxdHdsa fUh0(b>X5tva0^y+E9z*w00000NkvXXu0mjfpr=HI diff --git a/community/textures/lever.png b/community/textures/lever.png deleted file mode 100644 index b43d14dd51f0bd1461ed4a918bf2c079a34ee80f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1360 zcmV-W1+V&vP)EX>4Tx04R}tkv&MmKpe$iQ>7{u2RjsT2vVIah>AFB6^c+H)C#RSm|XfHG-*gu zTpR`0f`cE6RRL;k>@Q#C4j3NMZqtkRU=q6&onSMx0ii6botEPx$x;T)#vvg#t9I72Cnp$zfuRLKS{5( zwAc~Qw+&oew=`uBxZDAvPljyDt`wvx6bium8GTa@=)VPeR=wVu`#607GSpS-1~@nb zMv9cZ=JW2Z_TK(I)9mjDK>u=+__5Q400006VoOIv00000008+zyMF)x010qNS#tmY z4zmCN4zmH{a@eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00SsVL_t(I%T1HrD?<$c#(!sX@_jf)Qd-JH*hrMiB}K9; zO)e-GF8mKJxO3xAP;SHpYbFhmh?r#gsG*%L?u>m{bDVAFocH2=>3wdW=ehblkKpt9 z4E~d4Fc_q?v=mL#kY$-@G|Iuj0S<=)v&m#y$mjD^R8+9FwS~jsV0?TWfV;ap&d$!b zzP_fnx0ifAkI(0$xw#ol(>3ir8#6TrL-qB(b`>O3}c;08Xcqjg1Wea=9E51v-X{=T&fj|IV*ZKPT zA|8+9@pw>G6=8mU{*OW=5}~4^f}5Kg0NUEx5Cj3c-A-Ly9g3om$z-Ukti&)39v>eu zJDtu20H4o?BuR{pj^cDWd3}8)lgS{8BB4--xl0<)hKW?|1 z@9%FO9v(P6JY;ZikiESs9Q4|G15LjMbrm?XRQ4}!&`2BubTU*g}om47?D2fDw zLE`Z^7K;Ud?d@$E8X9o9TmYP$oUpUAgYf%>#l=Pbua1rm8XFr41OlW|Ddy(pNG6j! zKR^Ew0}%H1_KefhQ&d%DXlRIZI*lYrtgWq~C<+}N9n8+o^7QmXI2^`ev5-h4C@U+& zEX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQKC5dd;MtN;K28FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0-i}kK~y-)J(A0ABSjcSPgVU@)fdNhVrSxk2_SYOfy82V zhzH;;c@drh2?R{U5DO(kE{@&ZRqk6g3y;`+yH7gjsPBJzH)*RFDMbqTw$WM`JcHqt$JxC@82iquc+ZyK^Ik6Q}WO@o~aMuV&! zvU$5=LKC_`KP0mG3C=W5Xs6MIu>Sgj>QFO=fj8e?0kE%Y=o0d@-2?n@VV`Q!IN@^x zKz$nsHj-U>{K~W2R{+>T&`u-%;^g)Iw_BVyFk^Ulpj*z%hYQeD>W2fZe{L zxebV0SkgFAz9}emM(6@V7$~ni{ZgoJ1Nn816oPe{-TezmL%wv(zgZ(v2qb8CEwPKI zWV=K%>Jz+ks$(F0jI>JOXD5BlLrWb4^788elN;vOIek4)-v(4}C@(#eoF4lw;g$}c j8|vFYQi}5P9HZesC7(G5fOn0a00000NkvXXu0mjftUM=| diff --git a/community/textures/lit_furnace_front.png b/community/textures/lit_furnace_front.png deleted file mode 100644 index 83abc9f7a0b900ac4faf9769950391e40ff0c485..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1260 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 Tido^^00000NkvXXu0mjfboMuF diff --git a/community/textures/mob_spawner.png b/community/textures/mob_spawner.png deleted file mode 100644 index 3ba9080251373f7b8a070f5e84380caa465d72b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 962 zcmV;z13mnSP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ&B-&o=YybcN8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0h>ugK~y-)m6B0!+AtJ_KRa>VU|67#v4J$GhS0>cR#R1J z+r$3<-`LBhRihLL3M6s72ZTr4Y+~odSJ%h(J;z798ckeaI=F0!h+=lT9VW2IMw|J3 zjxh!)rQZ*NfQBqt7Xp_pVK}>W@MnEm*Yyr{fBMmh-f--6ocI^2s-mSF>p~!mdR>L(aqe|a{+aqqw#U43?v8WcrwQg5|dAqJOIC!!daEeV?! zSZg_}w&e2M6T>j1SkKXMLZ0Vd?jsZ1qnRJ^^}CyYn%Eppy=*VR7~{!O)++PpcDr7d zR7&x`D9aK6r4+KxoVrU7ho08rMKW-$WJtF7N!01@3F$pn8MM|IV@T5!wkt#wljk|g zW<;Gniyz;h_x8#Gy!r6Sn>4xkdQuXHvs)*%)&Nvh<;hu=o$QAgTuxne)<{9 diff --git a/community/textures/mossy_cobblestone.png b/community/textures/mossy_cobblestone.png deleted file mode 100644 index d76bac867f1f28c62f312a4bd6084dfe5ca94771..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1401 zcmV-<1%~>GP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ%17=TXMgRZ+8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b15!yuK~y-)O_NPb6A1uDUps}iQ#viswft=%4UK^iNX_EG z#E=LW5)LN2#&FVudol5Z38*#FvlopgV*L-lqwi7yG-n%gi8gJ!gb-9aot1&QaVg;y3+Bl0+d@Kxk@eimR%M%jIG{ zyUyJ194)>UG)-e6y@2N@4|hB7l1L=j&^L(MqGYpKo=-m~Q^;T!MG?a=c%6Fg}3vBuwx<7jXY`z6Nx&-c+%8fMO9@Z2DU zLV-t#N0bgqSVtC?ZsE;(iN#{<@9$%;sHosn_!Kw#Z(tY(dPc|iY%q9kkm>1Z{C+=n z(axo|OW52tq9>vZ4-YdrImzQuQgu@86i|vdZP`{Plt( z?-63VNO~uYoR<0i3R>5NE@(_xm@bu$TdMbK&wfPDF zyVL1JmSxI9W!(Ao4xY0fVpn5WMGIM$5qts diff --git a/community/textures/obsidian.png b/community/textures/obsidian.png deleted file mode 100644 index b4869a918eb647ba61275bdad81a06c3b12fa016..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1183 zcmV;Q1YrA#P)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ%4jBFv`v3p{8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0(eP8K~y-)O_M!u8%Gd^pV=j~q)d?vZ9+~E19A~ah?63a z5O*#TAdv0GKgqu1MtKcIM{p2$>IoOEGb1&y5(T+87GS)K#;Ai znKn(seDVNmEz6q)#w0-b@!J=?KK>Jc>-xM?RN>sPQ)H0wc%~@@=93*({sKq<FyuYH~A7O2eJN+rvT0#gk##2?7 z%qKgXUH!w}*H0LYMw~2;Sot;9xxvdAYYz6F6Jv!>6^$mgHYbP(K2=!TBj!xg1XMFO z)xTWV=U59e9?#Vn+X>$2Oe}yf8*Q_^Ii-{aW5D~&_7`7qRh{v%$FwU05rb+w0R&aU z@@9z$G)+X+FdWWU`6VgkPaYYV5<*1?>u$F#(jo3X|bIR({D~FygPbzoIIDV4a)4JimTN2y0Z8m^T4c002ovPDHLkV1g~+1a<%b diff --git a/community/textures/off_redstone_torch.png b/community/textures/off_redstone_torch.png deleted file mode 100644 index e09094348f431c1c749beb985940af2e80dc36e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 659 zcmV;E0&M+>P)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMtIuAW;Z2$lO8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0BlJ_K~y-)V_+BsgB*l0F#PvmVEB(u4HG`ePYetU4+&U; z*8r0wI|gN2HS!G*7i44j@aY@*1~4%(F|e_*k#7JO7Z=07fB(og;Kz?241fOoA>V)t tw_h?aGBT2HfT5ZMWnMUc>jgnC003?~9dovA=7InK002ovPDHLkV1h6F4T1mw diff --git a/community/textures/off_redstone_torch_top.png b/community/textures/off_redstone_torch_top.png deleted file mode 100644 index c2d50249f5ff86a1b5da1f429f69c99e15fee7a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 588 zcmV-S0<-;zP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMtG6Ck~UjP6A8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b03}I8K~y-)V_+Bs!ySY%F#PvmVEB(u4HG`ePYetU4@bjs aBme*;js$XtlH@Z00000EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQKBH~CWQk^lez8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0(MD6K~y-)J(JsV8$}dF*E!wObCE_G--2CG2`PA?itxg> z@v)RCia-(>S(apFB+aESJdE)Vbg#YFKJxo-zb3I6X*h#gw3wr=z_(jO1XI=|F?5fA zlerwN8UW&HPl^Gn#T>O3z5EstA#_Jl45)Pg_;ye7J#Mx@Oh&u;LRD3WD^WFA%_|Va z?;ij#^%VpqsfFk<^%Y_=QWybPzWWI=8R7gDNdX)C6Uq0OY6)ryU!O=ZAa=s_hc#;5 zD|$FSPefPW5&AP$ttCc}Z?~wc&|(h2dHsR?6J))xPpFl&p7m0f7sA> zXNtN(i#h(Vrf;9gs~WKxDF(Xjiehnz7ITL6UzpiM>*gia-TsIJVt<0@QCCr3RuDa? z#pD(4`YrLaCk`FuyAM;jr^7@vZa)K%y;w*oAt`{JqWJv-Vhm<>fmRLSxC215l4LTh zmJ0xehd+=k$J96A1OBi^)F8%8tsi%U2;#T_Xntf_Ah5uzVRF;IX1fjD%eFd`{nmfw(KVBD>yrMiMR z_VlZJv}&+^`w6Uj)%SlVrdpCP_}vOrr&+s#1&jB0gziXap8$}oM6#UFKH>d{9sd0jaV2)~hS;@} vcbh>mpQ7wmq!=(|4Yrt$Za87c7QA$EzY~i00000NkvXXu0mjfldlsS diff --git a/community/textures/pink_cloth.png b/community/textures/pink_cloth.png deleted file mode 100644 index d83b6162f575d2126ab9b2500481cc6d2da39c49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1294 zcmV+p1@ZccP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMeGKPNmkN^Mx8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0_RCYK~y-)J(A0A<5U1Z&-K06&m^|vrjyX5v;%_*s@Sq( zi^TWv8Az;IBQ|XL1tc_x#b`RE>Vv*$J4sU}&BKY~_}XDn)K54M@yB=Hucg)$vl&7w zoFv8xYs{|uSjxglVl1V2e0PSf2Y8((09k*8SuRj+vw_f>X#XXarN}2!%4~%We5eeI z_xG4ZhPxRdwc_#3DLSs>#34>nN7>B~AuXoImk6y0dToTXDDx%d+)&%zLe*SMx&&bB z+iirFEQez%V^FKngkqNAwiA@^kY3zURUkbFf4jrv4Nz4U35KQ`1*iiHb>3QZz%I6 z?nZ*sikX~TvmAWDZ6`>rDT{*n;RQjjjh8eS9h~4K5m;;dj}pY+KmWRZmX{Y4vpE1% zC6=wRqXtgcAiW)6(u`2T9adArylb_;`zTQ8K^2 zqpCnHha)Uo<8Flb-8RGD-yozW=(SP4OZG6rZYD(CHUN{eOYEplw6{xD8N~6AzpRB+ z&+LACgH@Vh(j}EKIB`g23bMO?S^@K7yI0Z}Kw-Z3| z_}3{yDx}sZsTd!f0T67xKxmCpHSbB*(HTN&T3_vB*@}lhk1*3YjlCV5utqUoU@1lS zo38;#ZwE|IFA;}7{Isr&!E41x$6+;{VHWxSD`%wt^r?T+L)Yu5noHJy0Kn_CP`-<@ zqu_bbGB^0$7G=IfNQJ%8r2EAy^2wC+>JBlK=+H+xF6mVtvsj>puiv8Ub;4KMT3Dox3KvB)duN`J}|W~1vPJeq-Zo6s0!6yWI+x56xVv&&z*!RpcOTy xo*qah|Am}@m#W+Y$74GF_~D-UpAJLNUWUc@J diff --git a/community/textures/purple_cloth.png b/community/textures/purple_cloth.png deleted file mode 100644 index 8b245d92eb55e56ec2f288a7d33728d832eb1f04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1248 zcmV<61Rwi}P)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQKD3*-y+mjD0&8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0=Y>;? z#A>$NEyFM%+7d@8+5Q!K3W=liOti~s+KTx%Gpf8rj26TM?8+s+P4G4b;Pv>KRnd^T zYpnLX?bkGY!E}6wl@U+RkJMd>Y>F37eMJ;Z@ZOW{UpY2!T-ZxQIohG-_5E)q?gk$u zERJ9B5~I+>c8Yv=`w69?*q`Nv5)(?yK#wSg3n$!O+_BFJ>bBt1xAy=XH#J??ApwACNZbdk3CWu`yu{4r9=IV} zZV7`6X7ee1H=us|<&QyWXv%Zviz`Q!x18#Ze&`r^OWzF~-}hMUQ5xFr#QSMWWG|7` z?isBNk-Y?9@v=uLb-pl$)!Pe7DU1qG0*m|sfYe=Mv>?um8HRyH{(#ZK-PI46K=F0; zNZIDh{6}06(zY#H8SX#+2*5roSik>^cpK9X9n)i|1gd~1~SWULv(sn1tF2Ri~>)qMORXj(j3I73j12rkow@*j_0000< KMNUMnLSTYhG(Lm? diff --git a/community/textures/rails.png b/community/textures/rails.png deleted file mode 100644 index 802d13ce9f5858ed96afa7960dccfaadc9278b23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 869 zcmV-r1DgDaP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMs5Y3&G`Tzg`8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0X|7YK~y-)&67b(0znvtA46+bu%cQoLIg{As6gy$V08A< zE%4IGJ@g;KpV58K{eg%&)TNt{lBtlAx~s8B%esZebTC&WaESDcUl1UlOM461OhPEjA$C;-07;Sns5EWrhV3=V=hEWz>^cwxC{zv9 zz0rngx%B&Q*sspi&4x9=d58Gws4i5E$qUXe9|DKR2!M;*a$wdM;>iOsJ_9hvFZGSV z$x%wg)?_wg5gOf&XDn4Mr0@zuKL*8`$EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQKB7s5QtS^xk58FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0)9zEK~y-)J(Epu8#fe14<8>n97&dJ*=~)bMGIt?X3_l3 z{=hB_6sV(GX_LTp;L(sn4aqJh==uWhsnPZk0|ftu?+(nM~!vT2zFGG16Ph+FCZE=*B4` z@Yj&A#&FYnqzSWBQfb_-I)VtPRsin$fLeGy&$QCe;XD&d;mSL_3jd4~73gFcb{rF( zSgylz`qPw&rSS81#VHrmiJ>&%OU`VHvI~w@8V_USI3@P#>BR8&DUqnWUiI`??w;@HAyksc_>wbA!+4iP}KFrZXzSR+W9{xqlh3 z#<2IEAhPgKW#9Jz9EZf(TYm6?)*5;nIz%AVN~ZGudPkfKsa9HPyjlfng~LlESRq(p zIv4K8iJf!k;~24G*y-}hpJ~Jx!&Pt;3x{FREe2~0A5J3x*IkDbgLZa_>>)<1F}&HV zan|t1a3Yq%t1hte%5*LmYxwo%atTz-9H)eCJEfJz>s61_r3TaLl=4&C<*tFM3Y7@F^yYF|5_1DtwBWsTB17WuOEX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ*EUEI48vp08 zFyO+HB@7G<3=EIBMHt@f*~9RNTZG|^rym0Y0|UdK`YPhW;E1f+|7*X#VTh-_e8Nal k2-i3`{SVjG{f|!#0K|zh@Cwc+_5c6?07*qoM6N<$f-uf5Z~y=R diff --git a/community/textures/red_rose.png b/community/textures/red_rose.png deleted file mode 100644 index 4a202b59f486669a6a8fea157d07581fcd3c8712..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 702 zcmV;v0zv(WP)EX>4Tx04R}tkv&MmKpe$iQ>7{u2RjsT2vVIah>AFB6^c+H)C#RSm|XfHG-*gu zTpR`0f`cE6RRL;k>@Q#C4j3NMZqtkRU=q6&onSMx0ii6botEPx$x;T)#vvg#t9I72Cnp$zfuRLKS{5( zwAc~Qw+&oew=`uBxZDAvPljyDt`wvx6bium8GTa@=)VPeR=wVu`#607GSpS-1~@nb zMv9cZ=JW2Z_TK(I)9mjDK>u=+__5Q400006VoOIv00000008+zyMF)x010qNS#tmY z4zmCN4zmH{a@eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{005RrL_t(I%VS^|1+)d<+4=u}XXpQqPYokJ&9i=gV{l+$ zVR-qUi9ww4AA|m{?-=TtuxY-?#`*u&|6dFaEG!IajBE_o|Ng?NnV<^}|NFym{qHXZ z1_lNO2No8bhA`lAg;+boe}QC%|6~VZw5u6qn#I~Fu$_T{fk7adfuJEw_#{8fg#kl5@Q2$p8QV07*qoM6N<$g15dX+W-In diff --git a/community/textures/redstone_ore.png b/community/textures/redstone_ore.png deleted file mode 100644 index ef0bcfe40b88d1f0d74f7f4adf7c617ff5bbe223..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 946 zcmV;j15NyiP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ&77~fQ>;M1&8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0gFjQK~y-)g_E&rD=`p7kI{B=p-zR$6#EAc@*(+zfXj8i zu-+z(4eKuZ5BU>!DOJ2u@U{quV1bK(USW?|I}Vw0n7O)l?$x5}x|~vCURrC6F#ve) zsq2~;BlqU2+lAX&E|&lpV=%_xy~kP$KuYNhFilfIe;5Y-uGa;?IY$Tqtu+9z3AcVkA<(&K0^WIaXlt?L|wJtO_ zea~A}acCN})=bkxvtE}T!0~v*T1zF!F-9I=Uii$JQ7On7Hw?tK#ahd#6sMf8n0W8c z5~OiYr@SU^%=H6j7dCy*s1)zd&(w8&b#;*ww%fbli+e$m`m^5?av?~#u{Xwe9i$Kf z55vG|w*%nNG=;u%4pARtEVeIJt5ud{$sL5gBv6(l7hE1FNBl{G$awnt;;pLqxX3wO zRp4W9EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMt15h~RWdHyG8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0C!15K~y-)V_+Bsv;}_|82<|NoS^Vm-N<85kHCCKtQ>x6zluYXB2oNhT%+Ha0c}vJK$k;$rys?;rUF z{P^*M;m@Bx`tFjSME%nRply&&iX0O$5J@&tIFH2?qr07*qoM6N<$ Ef)5QL2LJ#7 diff --git a/community/textures/redstone_torch_top.png b/community/textures/redstone_torch_top.png deleted file mode 100644 index ecd10c451fce6d1c3c62128eff8cbb80b38933eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 604 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 diff --git a/community/textures/sapling.png b/community/textures/sapling.png deleted file mode 100644 index df8784b3c65fd65a88856f0461cedf150c2d444a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 989 zcmV<310wv1P)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ&HL&i?o&W#<8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0k%m*K~y-)y^}#}6JZdBpD!*&60=!oK(q&|5HJ@PQZL0y zbC#SoV9z~xHTnzs6N3Lh5Dz_cPa=4;O%EQdCKnAZXp&Mf!os&3HYuWvr(N7lNN>(< z=9_QcdEc3V|7kl1+memt79}l8+&S2m@knDimMkss@o2z!q*KM}ZCm!6hYFxos;2T) z7UlMz80mE~9xYcNNl z-nQlLyBvM*6tkG8a%+ue!Dk-$CIHv3u2Lvmrr%gex=K;F@#vZ~YGsLi%dwcd982nLTa4_Y1pbWUb>IWZK5W<(PI_JnQM+1oL301{kA;b2S6-aaDplz>R`_zi zFgGpjYNeL#{@(7UMALKn-f1$z3vVH7-+%ZC+M@TR1%fcT@IwCrLYdy{z7gK`00000 LNkvXXu0mjfL5sPK diff --git a/community/textures/slab_side.png b/community/textures/slab_side.png deleted file mode 100644 index 0c9bc23ac8e8abbfe3a01c66f9176231bbb2e1df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 896 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 diff --git a/community/textures/sponge.png b/community/textures/sponge.png deleted file mode 100644 index dcb11e795b54729c3787730de704725c7eacb3d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1316 zcmV+<1>5?GP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQK9Et<1GW&i*H8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0{uxuK~y-)U6MU$8+RDSfB!@F9XfH5jPM^xCWRJ4K@d

>ZBF|G^- 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 P00000NkvXXu0mjfHdO=U diff --git a/community/textures/tnt_side.png b/community/textures/tnt_side.png deleted file mode 100644 index 7aaa0d758441683f856a26a8fb2e9b031b841a12..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 772 zcmV+f1N;1mP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMh83FH76951J8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0NqJMK~y-)&5|){12GUqpVm%nuonU$jhn4<0g=L0D&KcI zA7d_{N@W~uV$`fRmXsoqkQ*D3A`uKT@Bd*W#3-{_#lz@1jDe4H;N@XP4L1Nofa5u` zI|XXF;g{#{2Pk7qOyHcOZQF~6QghA$T(XG7pCLI!BEX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMh2^?5LcK`qY8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0dz@3K~y-)m69=Q!ax+qe>SD!)=J^PvEY!wsT~gDRCLMM z;pn#z#LZE%3VwpF<%TX9BTfn2P$!2B0mp(+v}+4u2a}LWQt-bdk9+Uk`~U9Ml3wdT zs^!-Y_t#gP6JG-O?g#+uWx~1fMb^z2Ls7;U2CE(I`A6wlrrPVn?P2r12OzThJgpaO zzV}3SA14lo>^@p+W}TZn$BBcy!DZ2tSTA_Hd&Jv@M1ZJU03^K@?fC})$_7_7su_6O zFiqAt>8-vyLN$+LYps#fX*q+)?gKDQ6SDD*F=(xi6DY-SI4oySEIO4^3MUQ_b&Kcs z&zwoEY7a8cS+Tbb88^GRjilFN`So*b;Jc&zY07TTY*{Z82CE%PDWsHt8AvH{;((;r zDlIO)y_B+=!CEX>4Tx04R}tkv&MmKpe$iQ%j{(9PA+CkfAzRC@LaOT7@E12(?114kp)6Xws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;o12rOi4rtTK|Hl- z>74h8BdjdviO-4047wokBi9v|-#C{X7Imu4RCM> zjFu>S-Q(T8-M#&LrrqBU*0XZY1rG|v00006VoOIv0RI30001*5eDeSR010qNS#tmY z3ljhU3ljkVnw%H_000McNlirueSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{003-BL_t(I%VS^|1%n*?zrpbTe?P;2@(uVu{r~^}|H(I? zCdux(t` diff --git a/community/textures/torch_top.png b/community/textures/torch_top.png deleted file mode 100644 index 8d66d02feaf300bda3daf25124a684a4aeec93c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 589 zcmV-T0EX>4Tx04R}tkv&MmKpe$iQ%j{(9PA+CkfAzRC@LaOT7@E12(?114kp)6Xws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;o12rOi4rtTK|Hl- z>74h8BdjdviO-4047wokBi9v|-#C{X7Imu4RCM> zjFu>S-Q(T8-M#&LrrqBU*0XZY1rG|v00006VoOIv0RI30001*5eDeSR010qNS#tmY z3ljhU3ljkVnw%H_000McNliruX1b02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{001RPL_t(I%VS^|1;ZWuzrpbTe?P;2@(uVu{r~^}|NoB$ b<*)|;4IvElCp5KD00000NkvXXu0mjfH7xe{ diff --git a/community/textures/unknown.png b/community/textures/unknown.png deleted file mode 100644 index 1ba274d99e19cd481cea636d29f89a4c8b58e3ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5519 zcmeHKdpJ~U7azrlbfFs}W2BUC?lb0+$!)|ax1o@3duH}9nwyznMktqVY9dY)T^vQ6 zPIQse{cfaCgN{z2R79!JAv!1d_Ds4x-}$HK`ObgMJbPyE^{(|>YyH-G-~GO60e)T+ zj4h2}FxUj9H-iQJPu5=J;LxwlpCbSaX5hUpI8@F86bOk_%;O6{ggj0HB0wdd2ZJde zyb1}IwmX@;@0=&qPtiB(r6ertfK%7!P2yLTzsa;F|#pjW7)gi z1@T3yK&5l_yRMq>L@Ip$B}>{YT)BMnwTWG&XWG{uN%b#_e=|L#GcNvlXGTKRN{KosHLbmo z^{&Xrv3GjFH3MbdZTI^RuO_6|*)6iM%D>-KaPwet+~lXKRYTDktGaC8bqzPUn5h5$ z0B>6C|Jbvq2W**{(SPD({9A`Yi(iVL8vTyTORvAjy`F3L*6PmTveKibb8;+72bNdP z8!}LV`;Cep2pmfqRi)J>V{9|WZcE)`30mI0cagPe`%BuJ23qI*fP9+4^qWgvaGi0M zmVU4ee;V_GC2EgXqScY5dz+-$Q!j`&=BBSv^;RY3MLbsAwlUd(lWnekVeL57!JB?< zM_S7T_Hinf4)?V(A3ZvR{@5)zy*2mS$(wb9}?2 z&ITD~(*`x1-DUIvXV;3yh8fr=I}7Y~BpiwjNZkIwQR?EgV`7v@uVVsQdI(-o4W{s@ zMpFogXM2*)EYWw3B;(3`YDLJ9og{doVVJ4a1(PZJ7EQq+s`sxjmvaVPU$1O2>E11o z9jneYYE>X2=EyPC!&{pdlvLa|dEqVq3&PwgW<&8066n9H3ce3DUonY`e)<0%(m zsXechR90c&)Z}qBM5#-c2#(c-wfn!0<8^yOWH`MIp(lYzD z2G_AC9om+x%CUB8(;JW#g&i32IO^7uUeRM)5Sd?`I?Qx_TyHk%X?LJQ=#-wc%L(Mw ziG9BlWM|(#39H%iGBeRyvGV4Y{?y8hJ-ziOOwyNB&9Fx2v*{Y*gCNSxhJnlxRAJPl zZcY68)Bf+B9tD8+hV#i&{WL8qPf5sG*OK1GmE{G!>cPnFf*>!wdiSRcL!t^8ypVNj zK?1vHGQnI8AUf;mZNUAB$iFkkhIoMb#>OW&hSq{PaK`ZKo< zxGX*KAdD!!JU-7Tkd__0{;)p1t~1KL>XO5ybt8{7b4?zvKE~v%{Q$2$IBvC>;V;`@ zFujd@503z*hsUQi6z>bP*e=Q?aAeBaKR|0s<5Jd3iR$X=R@zfP~Rmqj#!8W zxMDVlRthE1I}iqQc2PgJq+BkcVK54X0<9pR#nK22j!LCsuy_m}kAgH% zvN(|(P@+UKJ1xXV3uUo1jsF#)zXMovc}p>f2g_=FN)-_P(O*(eJT9~dPd z!QjwXj8KUA+CnDxjDI7Z3=J!3(U-0o`#F6XnoBt|OGrNiZ5 zKmjO(RArD?+&3=0n7#p@EwmIw@P!hc6-4$onsPqx3t8X9rXA6x^K~GQ`Dfg3v_Ivp zQ--vBeQ69aCq^3{lR-yn{nNN&4xdZY-2wy(i2wj36p73OQA8@1fT9pU5(?mwus9-x ziX-3%UqLZNGC3gPfLbUB9Lr6c>WxlG!*S0gFT7cpNT@2sq(UYyy#l!gKH(kPVQXI8JyS6qiF= zB$f&RsGNKu5CLK&q6po9mT;O|0F#cyqp@Ek0RlkIgAC}%r6Ruai#(Vw1cT&&mQ0)z zo_%D7&OYtvyfS`Xk`7VBc z(Dj3^?_%J)lz(*B54ygKf$viO(Ov&Hx{SXZcR&%e2~t3ZnYk59KR^c|ID4@d12&@l z{(Q0cCrDx>@eY&0U}!t-rKc=%iG_rQa;C4RVTYly>Da09jVvojWFhwqm3xSV+FdhD zx0?gG2nAmriO}xmLXs!WfRuWe47XrPO#5nI=#qu_aOILhooH$)}@chZ9xU}kl4MT>B bGi&w!3XglEuh5=8VKAnrAEV5DP0D`($?JZ# diff --git a/community/textures/violet_cloth.png b/community/textures/violet_cloth.png deleted file mode 100644 index 30374ae34e55b076f0d715aece6a9f5f60a80d69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1264 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 diff --git a/community/textures/wooden_door.png b/community/textures/wooden_door.png deleted file mode 100644 index 9d21e8903987d6baa53fab27dff237d0cd2f32ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1132 zcmV-y1e5!TP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMrHLbK0egFUf8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0!2wgK~y-)ZIZih(@+$Lzu1oBx=oX)c~p&HVPk+5Rbpgd z?2Pymm{<{FW@139Iv~cboseK)K@3cQRDnuFXj0NN&ckt?IQF%#&0rcDnzJ0;-?{fZ zzI!qUyE}>SJuaJWm;fX)A`Hd+{J$N2ZJ_~ln+|a->5n}sMH3hyq`dM#S5<_R=&FjM zsI(fxGyy>G?0mr+no6O(iaVOk6U^e6uIqF2Ms==fgJX-1zfzRqOqvr#JnV4c|fKC;m4 z&Vb&?r8oHdl|Op(WVN!%&`u#X+hZb`z+sP#qJgFp2f++K6aXl?VWO)lhNdoswal{FEV`QB&%Aze zH~HQeplJ$Qn|UJfZv!=5<@C&DYcoIBF5;)wgjVM~Wl(q0N*9EKU`8&tLJ-U-Oa*I2 zW1+g;cd1tkBzAz7$Ou0aG}~jG!DOM;TtO#r1jn`ofFGsROO;gsWD=ugR1G7mQ(DQA zE2P_KWK&EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQKC2xJ+RYybcN8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0@+DKK~y-)J(Ejs8&v>>zq$9$of*%Jow4J@&V#mYQmIG< zi8Tv;C2RI2tF<7@DwGm* z6HOdRZto0ALO0R4uEXh@l)#q^20j3jiJ`14s+(wB<#0TTQ3@7|HDzUK1p=qll^k=hq*{3@Xv->qcAd$kMSX=Jz4LdtNYW#MAt0n(gIUT1cxgm007@ucI>7XP;q2laq2EhK% z!&MHd-Bwif2Iwk>FJC2SE%@!vN7BcVpFb%_4eiqQ^V!;66fb1KDT9Q zNfHlFJEU37dR<|P&6IE6uXy$(B#tD$ub4~?QabdvJ$z50qDW({W%kif6g9&^fGHZJ zaOftQqfx|SvF7&900o_ni|+~UJ}k-d2KD;)e`vK7&z^)V(lz7rj3^ZB4O=KBxVXw$ qmkr%S6NWD5mzzwU9{TJJCI14D`bo$BDI)&>0000@B diff --git a/community/textures/yellow_flower.png b/community/textures/yellow_flower.png deleted file mode 100644 index 6f35174d4b0b3fe60e0445a16274d058346b7d57..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 694 zcmV;n0!jUeP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ*B2G%Z8~^|S8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0FOyTK~y-)V_+BsqW}jubD8P?$Dd6985kHCKK^9-zikgA zoR1EeunC&z{$sp-3t|uh0|Ud2>;D<}+5a&TZNSH$O#fBY7#Lo?{Le6V)<3wbNcM_Y zJHvmmb_To}nFty3>kh;qfn@9kVfB|lGQ)p16@&o{3=9k(<}wf;1|Q}!Fv2wA(~Q>( c_%tB{0EDhJ&^+$p^#A|>07*qoM6N<$f}_JB-v9sr From 9dbb57248ab78c175aa5484e3c554acb3ea6bfb1 Mon Sep 17 00:00:00 2001 From: Rahuldesai <84022777+Rahuldesai0@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:29:28 +0530 Subject: [PATCH 2/8] Create README.md --- community/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 community/README.md diff --git a/community/README.md b/community/README.md new file mode 100644 index 00000000..879dced6 --- /dev/null +++ b/community/README.md @@ -0,0 +1 @@ +In this branch, I have added perlin noise to generate hills, lakes, caves, ores, etc. From 8a16b54fb400e936a645daf9e0f6aeb0cbdb669d Mon Sep 17 00:00:00 2001 From: Rahuldesai <84022777+Rahuldesai0@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:35:00 +0530 Subject: [PATCH 3/8] Add files via upload --- community/block_type.py | 50 +++ community/camera.py | 116 +++++ community/chunk.py | 192 ++++++++ community/collider.py | 67 +++ community/frag.glsl | 18 + community/hit.py | 73 ++++ community/main.py | 240 ++++++++++ community/matrix.py | 156 +++++++ community/models/__init__.py | 34 ++ .../models/__pycache__/button.cpython-311.pyc | Bin 0 -> 1271 bytes .../models/__pycache__/button.cpython-312.pyc | Bin 0 -> 1157 bytes .../models/__pycache__/cactus.cpython-311.pyc | Bin 0 -> 1271 bytes .../models/__pycache__/cactus.cpython-312.pyc | Bin 0 -> 1157 bytes .../models/__pycache__/cow.cpython-311.pyc | Bin 0 -> 12107 bytes .../models/__pycache__/cow.cpython-312.pyc | Bin 0 -> 9171 bytes .../__pycache__/creeper.cpython-311.pyc | Bin 0 -> 8080 bytes .../__pycache__/creeper.cpython-312.pyc | Bin 0 -> 6242 bytes .../models/__pycache__/crop.cpython-311.pyc | Bin 0 -> 1389 bytes .../models/__pycache__/crop.cpython-312.pyc | Bin 0 -> 1239 bytes .../models/__pycache__/cube.cpython-311.pyc | Bin 0 -> 1261 bytes .../models/__pycache__/cube.cpython-312.pyc | Bin 0 -> 1147 bytes .../models/__pycache__/curry.cpython-311.pyc | Bin 0 -> 12237 bytes .../models/__pycache__/curry.cpython-312.pyc | Bin 0 -> 9268 bytes .../models/__pycache__/door.cpython-311.pyc | Bin 0 -> 1206 bytes .../models/__pycache__/door.cpython-312.pyc | Bin 0 -> 1092 bytes .../models/__pycache__/fire.cpython-311.pyc | Bin 0 -> 922 bytes .../models/__pycache__/fire.cpython-312.pyc | Bin 0 -> 844 bytes .../models/__pycache__/flat.cpython-311.pyc | Bin 0 -> 731 bytes .../models/__pycache__/flat.cpython-312.pyc | Bin 0 -> 689 bytes .../models/__pycache__/glass.cpython-311.pyc | Bin 0 -> 1262 bytes .../models/__pycache__/glass.cpython-312.pyc | Bin 0 -> 1148 bytes .../models/__pycache__/ladder.cpython-311.pyc | Bin 0 -> 924 bytes .../models/__pycache__/ladder.cpython-312.pyc | Bin 0 -> 846 bytes .../models/__pycache__/leaves.cpython-311.pyc | Bin 0 -> 1263 bytes .../models/__pycache__/leaves.cpython-312.pyc | Bin 0 -> 1149 bytes .../models/__pycache__/lever.cpython-311.pyc | Bin 0 -> 1270 bytes .../models/__pycache__/lever.cpython-312.pyc | Bin 0 -> 1156 bytes .../models/__pycache__/liquid.cpython-311.pyc | Bin 0 -> 1217 bytes .../models/__pycache__/liquid.cpython-312.pyc | Bin 0 -> 1084 bytes .../models/__pycache__/pig.cpython-311.pyc | Bin 0 -> 9581 bytes .../models/__pycache__/pig.cpython-312.pyc | Bin 0 -> 7311 bytes .../models/__pycache__/plant.cpython-311.pyc | Bin 0 -> 923 bytes .../models/__pycache__/plant.cpython-312.pyc | Bin 0 -> 845 bytes .../pressure_plate.cpython-311.pyc | Bin 0 -> 741 bytes .../pressure_plate.cpython-312.pyc | Bin 0 -> 699 bytes .../models/__pycache__/sign.cpython-311.pyc | Bin 0 -> 922 bytes .../models/__pycache__/sign.cpython-312.pyc | Bin 0 -> 844 bytes .../__pycache__/sign_post.cpython-311.pyc | Bin 0 -> 927 bytes .../__pycache__/sign_post.cpython-312.pyc | Bin 0 -> 849 bytes .../__pycache__/skeleton.cpython-311.pyc | Bin 0 -> 9068 bytes .../__pycache__/skeleton.cpython-312.pyc | Bin 0 -> 6883 bytes .../models/__pycache__/slab.cpython-311.pyc | Bin 0 -> 1324 bytes .../models/__pycache__/slab.cpython-312.pyc | Bin 0 -> 1210 bytes .../models/__pycache__/snow.cpython-311.pyc | Bin 0 -> 786 bytes .../models/__pycache__/snow.cpython-312.pyc | Bin 0 -> 744 bytes .../models/__pycache__/soil.cpython-311.pyc | Bin 0 -> 1332 bytes .../models/__pycache__/soil.cpython-312.pyc | Bin 0 -> 1218 bytes .../models/__pycache__/stairs.cpython-311.pyc | Bin 0 -> 1326 bytes .../models/__pycache__/stairs.cpython-312.pyc | Bin 0 -> 1212 bytes .../__pycache__/tinted_glass.cpython-311.pyc | Bin 0 -> 1268 bytes .../__pycache__/tinted_glass.cpython-312.pyc | Bin 0 -> 1154 bytes .../models/__pycache__/torch.cpython-311.pyc | Bin 0 -> 1220 bytes .../models/__pycache__/torch.cpython-312.pyc | Bin 0 -> 1106 bytes .../models/__pycache__/zombie.cpython-311.pyc | Bin 0 -> 9102 bytes .../models/__pycache__/zombie.cpython-312.pyc | Bin 0 -> 6897 bytes community/models/button.py | 34 ++ community/models/cactus.py | 39 ++ community/models/cow.py | 8 + community/models/creeper.py | 8 + community/models/crop.py | 40 ++ community/models/cube.py | 39 ++ community/models/curry.py | 8 + community/models/door.py | 34 ++ community/models/fire.py | 28 ++ community/models/flat.py | 22 + community/models/glass.py | 39 ++ community/models/ladder.py | 28 ++ community/models/leaves.py | 39 ++ community/models/lever.py | 34 ++ community/models/liquid.py | 36 ++ community/models/pig.py | 8 + community/models/plant.py | 28 ++ community/models/pressure_plate.py | 22 + community/models/sign.py | 28 ++ community/models/sign_post.py | 28 ++ community/models/skeleton.py | 8 + community/models/slab.py | 39 ++ community/models/snow.py | 27 ++ community/models/soil.py | 39 ++ community/models/stairs.py | 39 ++ community/models/tinted_glass.py | 39 ++ community/models/torch.py | 34 ++ community/models/zombie.py | 8 + community/player.py | 0 community/shader.py | 71 +++ community/start.bat | 3 + community/subchunk.py | 90 ++++ community/texture_manager.py | 42 ++ community/vert.glsl | 18 + community/world.py | 409 ++++++++++++++++++ 100 files changed, 2362 insertions(+) create mode 100644 community/block_type.py create mode 100644 community/camera.py create mode 100644 community/chunk.py create mode 100644 community/collider.py create mode 100644 community/frag.glsl create mode 100644 community/hit.py create mode 100644 community/main.py create mode 100644 community/matrix.py create mode 100644 community/models/__init__.py create mode 100644 community/models/__pycache__/button.cpython-311.pyc create mode 100644 community/models/__pycache__/button.cpython-312.pyc create mode 100644 community/models/__pycache__/cactus.cpython-311.pyc create mode 100644 community/models/__pycache__/cactus.cpython-312.pyc create mode 100644 community/models/__pycache__/cow.cpython-311.pyc create mode 100644 community/models/__pycache__/cow.cpython-312.pyc create mode 100644 community/models/__pycache__/creeper.cpython-311.pyc create mode 100644 community/models/__pycache__/creeper.cpython-312.pyc create mode 100644 community/models/__pycache__/crop.cpython-311.pyc create mode 100644 community/models/__pycache__/crop.cpython-312.pyc create mode 100644 community/models/__pycache__/cube.cpython-311.pyc create mode 100644 community/models/__pycache__/cube.cpython-312.pyc create mode 100644 community/models/__pycache__/curry.cpython-311.pyc create mode 100644 community/models/__pycache__/curry.cpython-312.pyc create mode 100644 community/models/__pycache__/door.cpython-311.pyc create mode 100644 community/models/__pycache__/door.cpython-312.pyc create mode 100644 community/models/__pycache__/fire.cpython-311.pyc create mode 100644 community/models/__pycache__/fire.cpython-312.pyc create mode 100644 community/models/__pycache__/flat.cpython-311.pyc create mode 100644 community/models/__pycache__/flat.cpython-312.pyc create mode 100644 community/models/__pycache__/glass.cpython-311.pyc create mode 100644 community/models/__pycache__/glass.cpython-312.pyc create mode 100644 community/models/__pycache__/ladder.cpython-311.pyc create mode 100644 community/models/__pycache__/ladder.cpython-312.pyc create mode 100644 community/models/__pycache__/leaves.cpython-311.pyc create mode 100644 community/models/__pycache__/leaves.cpython-312.pyc create mode 100644 community/models/__pycache__/lever.cpython-311.pyc create mode 100644 community/models/__pycache__/lever.cpython-312.pyc create mode 100644 community/models/__pycache__/liquid.cpython-311.pyc create mode 100644 community/models/__pycache__/liquid.cpython-312.pyc create mode 100644 community/models/__pycache__/pig.cpython-311.pyc create mode 100644 community/models/__pycache__/pig.cpython-312.pyc create mode 100644 community/models/__pycache__/plant.cpython-311.pyc create mode 100644 community/models/__pycache__/plant.cpython-312.pyc create mode 100644 community/models/__pycache__/pressure_plate.cpython-311.pyc create mode 100644 community/models/__pycache__/pressure_plate.cpython-312.pyc create mode 100644 community/models/__pycache__/sign.cpython-311.pyc create mode 100644 community/models/__pycache__/sign.cpython-312.pyc create mode 100644 community/models/__pycache__/sign_post.cpython-311.pyc create mode 100644 community/models/__pycache__/sign_post.cpython-312.pyc create mode 100644 community/models/__pycache__/skeleton.cpython-311.pyc create mode 100644 community/models/__pycache__/skeleton.cpython-312.pyc create mode 100644 community/models/__pycache__/slab.cpython-311.pyc create mode 100644 community/models/__pycache__/slab.cpython-312.pyc create mode 100644 community/models/__pycache__/snow.cpython-311.pyc create mode 100644 community/models/__pycache__/snow.cpython-312.pyc create mode 100644 community/models/__pycache__/soil.cpython-311.pyc create mode 100644 community/models/__pycache__/soil.cpython-312.pyc create mode 100644 community/models/__pycache__/stairs.cpython-311.pyc create mode 100644 community/models/__pycache__/stairs.cpython-312.pyc create mode 100644 community/models/__pycache__/tinted_glass.cpython-311.pyc create mode 100644 community/models/__pycache__/tinted_glass.cpython-312.pyc create mode 100644 community/models/__pycache__/torch.cpython-311.pyc create mode 100644 community/models/__pycache__/torch.cpython-312.pyc create mode 100644 community/models/__pycache__/zombie.cpython-311.pyc create mode 100644 community/models/__pycache__/zombie.cpython-312.pyc create mode 100644 community/models/button.py create mode 100644 community/models/cactus.py create mode 100644 community/models/cow.py create mode 100644 community/models/creeper.py create mode 100644 community/models/crop.py create mode 100644 community/models/cube.py create mode 100644 community/models/curry.py create mode 100644 community/models/door.py create mode 100644 community/models/fire.py create mode 100644 community/models/flat.py create mode 100644 community/models/glass.py create mode 100644 community/models/ladder.py create mode 100644 community/models/leaves.py create mode 100644 community/models/lever.py create mode 100644 community/models/liquid.py create mode 100644 community/models/pig.py create mode 100644 community/models/plant.py create mode 100644 community/models/pressure_plate.py create mode 100644 community/models/sign.py create mode 100644 community/models/sign_post.py create mode 100644 community/models/skeleton.py create mode 100644 community/models/slab.py create mode 100644 community/models/snow.py create mode 100644 community/models/soil.py create mode 100644 community/models/stairs.py create mode 100644 community/models/tinted_glass.py create mode 100644 community/models/torch.py create mode 100644 community/models/zombie.py create mode 100644 community/player.py create mode 100644 community/shader.py create mode 100644 community/start.bat create mode 100644 community/subchunk.py create mode 100644 community/texture_manager.py create mode 100644 community/vert.glsl create mode 100644 community/world.py diff --git a/community/block_type.py b/community/block_type.py new file mode 100644 index 00000000..604c50c5 --- /dev/null +++ b/community/block_type.py @@ -0,0 +1,50 @@ +import models.cube # default model + +class Block_type: + # new optional model argument (cube model by default) + def __init__(self, texture_manager, name = "unknown", block_face_textures = {"all": "cobblestone"}, model = models.cube, transparent = False): + self.name = name + + # create members based on model attributes + + self.transparent = transparent + self.is_cube = model.is_cube + + # replace data contained in numbers.py with model specific data + + self.vertex_positions = model.vertex_positions + self.tex_coords = model.tex_coords.copy() + self.shading_values = model.shading_values + + def set_block_face(face, texture): + # make sure we don't add inexistent faces + if face > len(self.tex_coords) - 1: + return + + self.tex_coords[face] = self.tex_coords[face].copy() + + for vertex in range(4): + self.tex_coords[face][vertex * 3 + 2] = texture + + for face in block_face_textures: + texture = block_face_textures[face] + texture_manager.add_texture(texture) + + texture_index = texture_manager.textures.index(texture) + + if face == "all": + set_block_face(0, texture_index) + set_block_face(1, texture_index) + set_block_face(2, texture_index) + set_block_face(3, texture_index) + set_block_face(4, texture_index) + set_block_face(5, texture_index) + + elif face == "sides": + set_block_face(0, texture_index) + set_block_face(1, texture_index) + set_block_face(4, texture_index) + set_block_face(5, texture_index) + + else: + set_block_face(["right", "left", "top", "bottom", "front", "back"].index(face), texture_index) \ No newline at end of file diff --git a/community/camera.py b/community/camera.py new file mode 100644 index 00000000..478fd528 --- /dev/null +++ b/community/camera.py @@ -0,0 +1,116 @@ +import math +import matrix + +class Camera: + def __init__(self, shader, width, height): + # Existing attributes + self.width = width + self.height = height + self.mv_matrix = matrix.Matrix() + self.p_matrix = matrix.Matrix() + self.shader = shader + self.shader_matrix_location = self.shader.find_uniform(b"matrix") + self.input = [0, 0, 0] + self.position = [0, 81.5, 0] + self.rotation = [-math.tau / 4, 0] + + # New attribute for vertical velocity + self.velocity_y = 0.0 + self.is_jumping = False # To check if the player is in the middle of a jump + + + def round_position(self, position): + return [round(coord) for coord in position] + + def update_camera(self, delta_time, sprinting, world, flying): + base_speed = 8 + sprint_multiplier = 2.0 if sprinting else 1.0 + multiplier = base_speed * sprint_multiplier * delta_time + + gravity = -20.0 * delta_time + + # Calculate movement vector for all directions (X, Y, Z) + movement_vector = [0, 0, 0] + + if flying: + movement_vector[1] = self.input[1] * multiplier + self.velocity_y = 0 # Reset vertical velocity when flying + self.is_jumping = False + else: + if self.is_jumping: + # Apply velocity to the Y-axis during the jump + movement_vector[1] = self.velocity_y + self.velocity_y = -gravity # Apply gravity to velocity + + # Stop the jump if the player reaches the max height or hits an obstacle + if self.velocity_y <= 0 or not self.check_collision(world, [self.position[0], self.position[1] + movement_vector[1], self.position[2]]): + self.is_jumping = False + self.velocity_y = gravity + else: + movement_vector[1] = gravity + + # XZ-Axis Movement (left/right/forward/backward) + if self.input[0] != 0 or self.input[2] != 0: + angle = self.rotation[0] - math.atan2(self.input[2], self.input[0]) + math.tau / 4 + movement_vector[0] = math.cos(angle) * multiplier + movement_vector[2] = math.sin(angle) * multiplier + + # Calculate the next position + next_position = [ + self.position[0] + movement_vector[0], + self.position[1] + movement_vector[1], + self.position[2] + movement_vector[2], + ] + + # Check for collisions along each axis separately + if self.check_collision(world, [next_position[0], self.position[1], self.position[2]]): + self.position[0] = next_position[0] + + if self.check_collision(world, [self.position[0], next_position[1], self.position[2]]): + self.position[1] = next_position[1] + else: + if movement_vector[1] < 0: + self.velocity_y = 0 + self.is_jumping = False + + if self.check_collision(world, [self.position[0], self.position[1], next_position[2]]): + self.position[2] = next_position[2] + + + + def check_collision(self, world, position): + # Player's bounding box is 1x1x2 blocks, centered on the player's position. + x, y, z = position + corners_to_check = [ + (x - 0.5, y - 1.5, z - 0.5), # bottom block, front left + (x + 0.5, y - 1.5, z - 0.5), # bottom block, front right + (x - 0.5, y - 1.5, z + 0.5), # bottom block, back left + (x + 0.5, y - 1.5, z + 0.5), # bottom block, back right + + (x - 0.5, y - 0.5, z - 0.5), # top block, front left + (x + 0.5, y - 0.5, z - 0.5), # top block, front right + (x - 0.5, y - 0.5, z + 0.5), # top block, back left + (x + 0.5, y - 0.5, z + 0.5), # top block, back right + ] + + for corner in corners_to_check: + if world.get_block_number(self.round_position(corner)) != 0: + return False + return True + + + + + def update_matrices(self): + # create projection matrix + self.p_matrix.load_identity() + self.p_matrix.perspective(90, float(self.width) / self.height, 0.1, 500) + + # create modelview matrix + self.mv_matrix.load_identity() + self.mv_matrix.rotate_2d(self.rotation[0] + math.tau / 4, self.rotation[1]) + self.mv_matrix.translate(-self.position[0], -self.position[1], -self.position[2]) + + # modelviewprojection matrix + mvp_matrix = self.mv_matrix * self.p_matrix + self.shader.uniform_matrix(self.shader_matrix_location, mvp_matrix) diff --git a/community/chunk.py b/community/chunk.py new file mode 100644 index 00000000..7a69542d --- /dev/null +++ b/community/chunk.py @@ -0,0 +1,192 @@ +import ctypes +import math + +import pyglet.gl as gl + +import subchunk + +CHUNK_WIDTH = 16 +CHUNK_HEIGHT = 128 +CHUNK_LENGTH = 16 + +class Chunk: + def __init__(self, world, chunk_position): + self.world = world + + self.chunk_position = chunk_position + + self.position = ( + self.chunk_position[0] * CHUNK_WIDTH, + self.chunk_position[1] * CHUNK_HEIGHT, + self.chunk_position[2] * CHUNK_LENGTH) + + self.blocks = [[[0 + for z in range(CHUNK_LENGTH)] + for y in range(CHUNK_HEIGHT)] + for x in range(CHUNK_WIDTH )] + + self.subchunks = {} + + for x in range(int(CHUNK_WIDTH / subchunk.SUBCHUNK_WIDTH)): + for y in range(int(CHUNK_HEIGHT / subchunk.SUBCHUNK_HEIGHT)): + for z in range(int(CHUNK_LENGTH / subchunk.SUBCHUNK_LENGTH)): + self.subchunks[(x, y, z)] = subchunk.Subchunk(self, (x, y, z)) + + # mesh variables + + self.mesh_vertex_positions = [] + self.mesh_tex_coords = [] + self.mesh_shading_values = [] + + self.mesh_index_counter = 0 + self.mesh_indices = [] + + self.mesh_indices_length = 0 + + # create vertex array object + + self.vao = gl.GLuint(0) + gl.glGenVertexArrays(1, self.vao) + gl.glBindVertexArray(self.vao) + + # create vertex position vbo + + self.vertex_position_vbo = gl.GLuint(0) + gl.glGenBuffers(1, self.vertex_position_vbo) + + # create tex coord vbo + + self.tex_coord_vbo = gl.GLuint(0) + gl.glGenBuffers(1, self.tex_coord_vbo) + + # create shading values vbo + + self.shading_values_vbo = gl.GLuint(0) + gl.glGenBuffers(1, self.shading_values_vbo) + + # create index buffer object + + self.ibo = gl.GLuint(0) + gl.glGenBuffers(1, self.ibo) + + def update_subchunk_meshes(self): + for subchunk_position in self.subchunks: + subchunk = self.subchunks[subchunk_position] + subchunk.update_mesh() + + # segfaults for some reason + # self.update_mesh() + + def update_at_position(self, position): + x, y, z = position + + lx = int(x % subchunk.SUBCHUNK_WIDTH ) + ly = int(y % subchunk.SUBCHUNK_HEIGHT) + lz = int(z % subchunk.SUBCHUNK_LENGTH) + + clx, cly, clz = self.world.get_local_position(position) + + sx = math.floor(clx / subchunk.SUBCHUNK_WIDTH ) + sy = math.floor(cly / subchunk.SUBCHUNK_HEIGHT) + sz = math.floor(clz / subchunk.SUBCHUNK_LENGTH) + + self.subchunks[(sx, sy, sz)].update_mesh() + + def try_update_subchunk_mesh(subchunk_position): + if subchunk_position in self.subchunks: + self.subchunks[subchunk_position].update_mesh() + + if lx == subchunk.SUBCHUNK_WIDTH - 1: try_update_subchunk_mesh((sx + 1, sy, sz)) + if lx == 0: try_update_subchunk_mesh((sx - 1, sy, sz)) + + if ly == subchunk.SUBCHUNK_HEIGHT - 1: try_update_subchunk_mesh((sx, sy + 1, sz)) + if ly == 0: try_update_subchunk_mesh((sx, sy - 1, sz)) + + if lz == subchunk.SUBCHUNK_LENGTH - 1: try_update_subchunk_mesh((sx, sy, sz + 1)) + if lz == 0: try_update_subchunk_mesh((sx, sy, sz - 1)) + + def update_mesh(self): + self.mesh_vertex_positions = [] + self.mesh_tex_coords = [] + self.mesh_shading_values = [] + + self.mesh_index_counter = 0 + self.mesh_indices = [] + + for subchunk_position in self.subchunks: + subchunk = self.subchunks[subchunk_position] + + self.mesh_vertex_positions.extend(subchunk.mesh_vertex_positions) + self.mesh_tex_coords.extend(subchunk.mesh_tex_coords) + self.mesh_shading_values.extend(subchunk.mesh_shading_values) + + # print("before", subchunk.mesh_indices, self.mesh_index_counter) + mesh_indices = [index + self.mesh_index_counter for index in subchunk.mesh_indices] + # print("after", subchunk.mesh_indices, self.mesh_index_counter) + + self.mesh_indices.extend(mesh_indices) + self.mesh_index_counter += subchunk.mesh_index_counter + + def send_mesh_data_to_gpu(self): + # it's important to set this *after* we're sure our data is being passed, so that our draw function isn't accidentally called + self.mesh_indices_length = len(self.mesh_indices) + + if not self.mesh_index_counter: + return + + gl.glBindVertexArray(self.vao) + + gl.glBindBuffer(gl.GL_ARRAY_BUFFER, self.vertex_position_vbo) + gl.glBufferData( + gl.GL_ARRAY_BUFFER, + ctypes.sizeof(gl.GLfloat * len(self.mesh_vertex_positions)), + (gl.GLfloat * len(self.mesh_vertex_positions)) (*self.mesh_vertex_positions), + gl.GL_STATIC_DRAW) + + gl.glVertexAttribPointer(0, 3, gl.GL_FLOAT, gl.GL_FALSE, 0, 0) + gl.glEnableVertexAttribArray(0) + + gl.glBindBuffer(gl.GL_ARRAY_BUFFER, self.tex_coord_vbo) + gl.glBufferData( + gl.GL_ARRAY_BUFFER, + ctypes.sizeof(gl.GLfloat * len(self.mesh_tex_coords)), + (gl.GLfloat * len(self.mesh_tex_coords)) (*self.mesh_tex_coords), + gl.GL_STATIC_DRAW) + + gl.glVertexAttribPointer(1, 3, gl.GL_FLOAT, gl.GL_FALSE, 0, 0) + gl.glEnableVertexAttribArray(1) + + gl.glBindBuffer(gl.GL_ARRAY_BUFFER, self.shading_values_vbo) + gl.glBufferData( + gl.GL_ARRAY_BUFFER, + ctypes.sizeof(gl.GLfloat * len(self.mesh_shading_values)), + (gl.GLfloat * len(self.mesh_shading_values)) (*self.mesh_shading_values), + gl.GL_STATIC_DRAW) + + gl.glVertexAttribPointer(2, 1, gl.GL_FLOAT, gl.GL_FALSE, 0, 0) + gl.glEnableVertexAttribArray(2) + + gl.glBindBuffer(gl.GL_ELEMENT_ARRAY_BUFFER, self.ibo) + gl.glBufferData( + gl.GL_ELEMENT_ARRAY_BUFFER, + ctypes.sizeof(gl.GLuint * self.mesh_indices_length), + (gl.GLuint * len(self.mesh_indices)) (*self.mesh_indices), + gl.GL_STATIC_DRAW) + + del self.mesh_vertex_positions + del self.mesh_tex_coords + del self.mesh_shading_values + + del self.mesh_indices + + def draw(self): + if not self.mesh_indices_length: + return + + gl.glBindVertexArray(self.vao) + + gl.glDrawElements( + gl.GL_TRIANGLES, + self.mesh_indices_length, + gl.GL_UNSIGNED_INT, + None) \ No newline at end of file diff --git a/community/collider.py b/community/collider.py new file mode 100644 index 00000000..81f2aa89 --- /dev/null +++ b/community/collider.py @@ -0,0 +1,67 @@ +class Collider: + def __init__(self, pos1 = (None,) * 3, pos2 = (None,) * 3): + # pos1: position of the collider vertex in the -X, -Y, -Z direction + # pos2: position of the collider vertex in the +X, +Y, +Z direction + + self.x1, self.y1, self.z1 = pos1 + self.x2, self.y2, self.z2 = pos2 + + def __add__(self, pos): + x, y, z = pos + + return Collider( + (self.x1 + x, self.y1 + y, self.z1 + z), + (self.x2 + x, self.y2 + y, self.z2 + z) + ) + + def __and__(self, collider): + x = min(self.x2, collider.x2) - max(self.x1, collider.x1) + y = min(self.y2, collider.y2) - max(self.y1, collider.y1) + z = min(self.z2, collider.z2) - max(self.z1, collider.z1) + + return x > 0 and y > 0 and z > 0 + + def collide(self, collider, velocity): + # self: the dynamic collider, which moves + # collider: the static collider, which stays put + + no_collision = 1, None + + # find entry & exit times for each axis + + vx, vy, vz = velocity + + time = lambda x, y: x / y if y else float('-' * (x > 0) + "inf") + + x_entry = time(collider.x1 - self.x2 if vx > 0 else collider.x2 - self.x1, vx) + x_exit = time(collider.x2 - self.x1 if vx > 0 else collider.x1 - self.x2, vx) + + y_entry = time(collider.y1 - self.y2 if vy > 0 else collider.y2 - self.y1, vy) + y_exit = time(collider.y2 - self.y1 if vy > 0 else collider.y1 - self.y2, vy) + + z_entry = time(collider.z1 - self.z2 if vz > 0 else collider.z2 - self.z1, vz) + z_exit = time(collider.z2 - self.z1 if vz > 0 else collider.z1 - self.z2, vz) + + # make sure we actually got a collision + + if x_entry < 0 and y_entry < 0 and z_entry < 0: + return no_collision + + if x_entry > 1 or y_entry > 1 or z_entry > 1: + return no_collision + + # on which axis did we collide first? + + entry = max(x_entry, y_entry, z_entry) + exit_ = min(x_exit, y_exit, z_exit ) + + if entry > exit_: + return no_collision + + # find normal of surface we collided with + + nx = (0, -1 if vx > 0 else 1)[entry == x_entry] + ny = (0, -1 if vy > 0 else 1)[entry == y_entry] + nz = (0, -1 if vz > 0 else 1)[entry == z_entry] + + return entry, (nx, ny, nz) \ No newline at end of file diff --git a/community/frag.glsl b/community/frag.glsl new file mode 100644 index 00000000..46c3d2a2 --- /dev/null +++ b/community/frag.glsl @@ -0,0 +1,18 @@ +#version 330 + +out vec4 fragment_colour; + +uniform sampler2DArray texture_array_sampler; + +in vec3 local_position; +in vec3 interpolated_tex_coords; +in float interpolated_shading_value; + +void main(void) { + vec4 texture_colour = texture(texture_array_sampler, interpolated_tex_coords); + fragment_colour = texture_colour * interpolated_shading_value; + + if (texture_colour.a == 0.0) { // discard if texel's alpha component is 0 (texel is transparent) + discard; + } +} \ No newline at end of file diff --git a/community/hit.py b/community/hit.py new file mode 100644 index 00000000..716cfdea --- /dev/null +++ b/community/hit.py @@ -0,0 +1,73 @@ +import math + +HIT_RANGE = 3 + +class Hit_ray: + def __init__(self, world, rotation, starting_position): + self.world = world + + self.vector = ( + math.cos(rotation[0]) * math.cos(rotation[1]), + math.sin(rotation[1]), + math.sin(rotation[0]) * math.cos(rotation[1])) + + self.position = list(starting_position) + self.block = tuple(map(lambda x: int(round(x)), self.position)) + + self.distance = 0 + + def check(self, hit_callback, distance, current_block, next_block): + if self.world.get_block_number(next_block): + hit_callback(current_block, next_block) + return True + + self.position = list(map(lambda x: self.position[x] + self.vector[x] * distance, range(3))) + + self.block = next_block + self.distance += distance + + return False + + def step(self, hit_callback): + bx, by, bz = self.block + local_position = list(map(lambda x: self.position[x] - self.block[x], range(3))) + + sign = [1, 1, 1] # '1' for positive, '-1' for negative + absolute_vector = list(self.vector) + + for component in range(3): + if self.vector[component] < 0: + sign[component] = -1 + + absolute_vector[component] = -absolute_vector[component] + local_position[component] = -local_position[component] + + lx, ly, lz = local_position + vx, vy, vz = absolute_vector + + if vx: + x = 0.5 + y = (0.5 - lx) / vx * vy + ly + z = (0.5 - lx) / vx * vz + lz + + if y >= -0.5 and y <= 0.5 and z >= -0.5 and z <= 0.5: + distance = math.sqrt((x - lx) ** 2 + (y - ly) ** 2 + (z - lz) ** 2) + return self.check(hit_callback, distance, self.block, (bx + sign[0], by, bz)) + + if vy: + x = (0.5 - ly) / vy * vx + lx + y = 0.5 + z = (0.5 - ly) / vy * vz + lz + + if x >= -0.5 and x <= 0.5 and z >= -0.5 and z <= 0.5: + distance = math.sqrt((x - lx) ** 2 + (y - ly) ** 2 + (z - lz) ** 2) + return self.check(hit_callback, distance, self.block, (bx, by + sign[1], bz)) + + if vz: + x = (0.5 - lz) / vz * vx + lx + y = (0.5 - lz) / vz * vy + ly + z = 0.5 + + if x >= -0.5 and x <= 0.5 and y >= -0.5 and y <= 0.5: + distance = math.sqrt((x - lx) ** 2 + (y - ly) ** 2 + (z - lz) ** 2) + return self.check(hit_callback, distance, self.block, (bx, by, bz + sign[2])) \ No newline at end of file diff --git a/community/main.py b/community/main.py new file mode 100644 index 00000000..681b9c76 --- /dev/null +++ b/community/main.py @@ -0,0 +1,240 @@ +import sys +import math +import ctypes +import pyglet + +pyglet.options["shadow_window"] = False +pyglet.options["debug_gl"] = False + +import pyglet.gl as gl + +import matrix +import shader +import camera + +import block_type +import texture_manager + +import world + +import hit + +class Window(pyglet.window.Window): + def __init__(self, **args): + super().__init__(**args) + + # create world + + self.world = world.World() + + # create shader + + self.shader = shader.Shader("vert.glsl", "frag.glsl") + self.shader_sampler_location = self.shader.find_uniform(b"texture_array_sampler") + self.shader.use() + + # pyglet stuff + + pyglet.clock.schedule_interval(self.update, 1.0 / 10000) + self.mouse_captured = False + + # camera stuff + + self.camera = camera.Camera(self.shader, self.width, self.height) + + # other stuff + + sys.setswitchinterval(0.000000001) + self.holding = 7 + self.sprinting = False + self.flying = False + + self.time_of_day = 0.0 # Represents time of day, 0.0 to 1.0 where 0.0 is midnight and 0.5 is noon + self.cycle_speed = 0.01 # Speed of the day-night cycle + + # Define sky colors for different times of the day + self.sky_colors = { + 'midnight': (15/255, 15/255, 45/255, 1.0), + 'dawn': (135/255, 206/255, 250/255, 1.0), + 'noon': (135/255, 206/255, 250/255, 1.0), + 'dusk': (250/255, 128/255, 114/255, 1.0), + 'night': (25/255, 25/255, 112/255, 1.0) + } + + def interpolate_color(self, color1, color2, factor): + return tuple(c1 + (c2 - c1) * factor for c1, c2 in zip(color1, color2)) + + def update_sky_color(self): + if self.time_of_day < 0.25: + # Dawn + factor = self.time_of_day / 0.25 + color = self.interpolate_color(self.sky_colors['midnight'], self.sky_colors['dawn'], factor) + elif self.time_of_day < 0.5: + # Noon + factor = (self.time_of_day - 0.25) / 0.25 + color = self.interpolate_color(self.sky_colors['dawn'], self.sky_colors['noon'], factor) + elif self.time_of_day < 0.75: + # Dusk + factor = (self.time_of_day - 0.5) / 0.25 + color = self.interpolate_color(self.sky_colors['noon'], self.sky_colors['dusk'], factor) + else: + # Night to Midnight + factor = (self.time_of_day - 0.75) / 0.25 + color = self.interpolate_color(self.sky_colors['dusk'], self.sky_colors['night'], factor) + + # Additional blending for smoother transition from night to midnight + if self.time_of_day > 0.99: + additional_factor = (self.time_of_day - 0.99) / 0.01 + color = self.interpolate_color(color, self.sky_colors['midnight'], additional_factor) + + gl.glClearColor(*color) + + def update(self, delta_time): + if not self.mouse_captured: + self.camera.input = [0, 0, 0] + + self.camera.update_camera(delta_time, self.sprinting, self.world, self.flying) + + + + self.time_of_day += self.cycle_speed * delta_time + self.time_of_day %= 1.0 # Keep time_of_day in the range [0.0, 1.0] + + # Update the sky color + self.update_sky_color() + + def on_draw(self): + self.world.process_load_queue(self.camera.position) + self.camera.update_matrices() + + # bind textures + + gl.glActiveTexture(gl.GL_TEXTURE0) + gl.glBindTexture(gl.GL_TEXTURE_2D_ARRAY, self.world.texture_manager.texture_array) + gl.glUniform1i(self.shader_sampler_location, 0) + + # draw stuff + + gl.glEnable(gl.GL_DEPTH_TEST) + gl.glEnable(gl.GL_CULL_FACE) + self.clear() + self.world.draw() + + gl.glFinish() + + # input functions + + def on_resize(self, width, height): + gl.glViewport(0, 0, width, height) + + self.camera.width = width + self.camera.height = height + + def on_mouse_press(self, x, y, button, modifiers): + if not self.mouse_captured: + self.mouse_captured = True + self.set_exclusive_mouse(True) + + return + + def hit_callback(current_block, next_block): + if self.world.get_block_number(current_block) != 14 and 0 <= current_block[1] < 128: + if button == pyglet.window.mouse.RIGHT: + if self.camera.check_collision(self.world, self.camera.position): + self.world.set_block(current_block, self.holding) + elif button == pyglet.window.mouse.LEFT: self.world.set_block(next_block, 0) + elif button == pyglet.window.mouse.MIDDLE: self.holding = self.world.get_block_number(next_block) + + hit_ray = hit.Hit_ray(self.world, self.camera.rotation, self.camera.position) + + while hit_ray.distance < hit.HIT_RANGE: + if hit_ray.step(hit_callback): + break + + def on_mouse_motion(self, x, y, delta_x, delta_y): + if self.mouse_captured: + sensitivity = 0.004 + + self.camera.rotation[0] += delta_x * sensitivity + self.camera.rotation[1] += delta_y * sensitivity + + self.camera.rotation[1] = max(-math.tau / 4, min(math.tau / 4, self.camera.rotation[1])) + + def on_mouse_drag(self, x, y, delta_x, delta_y, buttons, modifiers): + self.on_mouse_motion(x, y, delta_x, delta_y) + + def on_key_press(self, key, modifiers): + if not self.mouse_captured: + return + + if key == pyglet.window.key.D: + self.camera.input[0] += 2 + elif key == pyglet.window.key.A: + self.camera.input[0] -= 2 + elif key == pyglet.window.key.W: + self.camera.input[2] += 2 + elif key == pyglet.window.key.S: + self.camera.input[2] -= 2 + elif key == pyglet.window.key.LCTRL and self.camera.input[2] > 0: + self.sprinting = True + elif key == pyglet.window.key.R: + self.camera.position = [0, 80, 0] + elif key == pyglet.window.key.F: + self.flying = not self.flying + + elif key == pyglet.window.key.SPACE: + if self.flying: + self.camera.input[1] += 2 # Stop ascending + else: + # Don't reset input[1] directly; let the gravity handle it + if self.camera.is_jumping: + self.camera.input[1] -= 1 # Prevent further jumping mid-air + + else: + self.camera.input[1] += 1 + self.camera.is_jumping = True + + + elif key == pyglet.window.key.LSHIFT: + if self.flying: + self.camera.input[1] -= 2 # Descend in flying mode + + elif key == pyglet.window.key.ESCAPE: + self.mouse_captured = False + self.set_exclusive_mouse(False) + + + def on_key_release(self, key, modifiers): + if not self.mouse_captured: + return + + if key == pyglet.window.key.D: self.camera.input[0] -= 2 + elif key == pyglet.window.key.A: self.camera.input[0] += 2 + elif key == pyglet.window.key.W: self.camera.input[2] -= 2 + elif key == pyglet.window.key.S: self.camera.input[2] += 2 + elif key == pyglet.window.key.LCTRL: self.sprinting = False + + elif key == pyglet.window.key.SPACE: + if self.flying: + self.camera.input[1] -= 2 # Stop ascending + else: + self.camera.input[1] = 0 # Reset jump + self.camera.is_jumping = False + + elif key == pyglet.window.key.LSHIFT: + if self.flying: + self.camera.input[1] += 2 # Stop descending + + + +class Game: + def __init__(self): + self.config = gl.Config(major_version = 3, depth_size = 16) + self.window = Window(config = self.config, width = 800, height = 600, caption = "Minecraft clone", resizable = True, vsync = False) + + def run(self): + pyglet.app.run() + +if __name__ == "__main__": + game = Game() + game.run() diff --git a/community/matrix.py b/community/matrix.py new file mode 100644 index 00000000..538e7e12 --- /dev/null +++ b/community/matrix.py @@ -0,0 +1,156 @@ + +import copy +import ctypes +import math + +def copy_matrix(matrix): + return copy.deepcopy(matrix) # we need to use deepcopy since we're dealing with 2D arrays + +clean_matrix = [[0.0 for x in range(4)] for x in range(4)] +identity_matrix = copy_matrix(clean_matrix) + +identity_matrix[0][0] = 1.0 +identity_matrix[1][1] = 1.0 +identity_matrix[2][2] = 1.0 +identity_matrix[3][3] = 1.0 + +def multiply_matrices(x_matrix, y_matrix): + result_matrix = copy_matrix(clean_matrix) + + for i in range(4): + result_matrix[i][0] = \ + (x_matrix[i][0] * y_matrix[0][0]) + \ + (x_matrix[i][1] * y_matrix[1][0]) + \ + (x_matrix[i][2] * y_matrix[2][0]) + \ + (x_matrix[i][3] * y_matrix[3][0]) + + result_matrix[i][1] = \ + (x_matrix[i][0] * y_matrix[0][1]) + \ + (x_matrix[i][1] * y_matrix[1][1]) + \ + (x_matrix[i][2] * y_matrix[2][1]) + \ + (x_matrix[i][3] * y_matrix[3][1]) + + result_matrix[i][2] = \ + (x_matrix[i][0] * y_matrix[0][2]) + \ + (x_matrix[i][1] * y_matrix[1][2]) + \ + (x_matrix[i][2] * y_matrix[2][2]) + \ + (x_matrix[i][3] * y_matrix[3][2]) + + result_matrix[i][3] = \ + (x_matrix[i][0] * y_matrix[0][3]) + \ + (x_matrix[i][1] * y_matrix[1][3]) + \ + (x_matrix[i][2] * y_matrix[2][3]) + \ + (x_matrix[i][3] * y_matrix[3][3]) + + return result_matrix + +class Matrix: + def __init__(self, base = None): + if type(base) == Matrix: self.data = copy_matrix(base.data) + elif type(base) == list: self.data = copy_matrix(base) + else: self.data = copy_matrix(clean_matrix) + + def load_identity(self): + self.data = copy_matrix(identity_matrix) + + def __mul__(self, matrix): + return Matrix(multiply_matrices(self.data, matrix.data)) + + def __imul__(self, matrix): + self.data = multiply_matrices(self.data, matrix.data) + + def scale(self, x, y, z): + for i in range(4): self.data[0][i] *= scale_x + for i in range(4): self.data[1][i] *= scale_y + for i in range(4): self.data[2][i] *= scale_z + + def translate(self, x, y, z): + for i in range(4): + self.data[3][i] = self.data[3][i] + (self.data[0][i] * x + self.data[1][i] * y + self.data[2][i] * z) + + def rotate(self, angle, x, y, z): + magnitude = math.sqrt(x * x + y * y + z * z) + + x /= -magnitude + y /= -magnitude + z /= -magnitude + + sin_angle = math.sin(angle) + cos_angle = math.cos(angle) + one_minus_cos = 1.0 - cos_angle + + xx = x * x + yy = y * y + zz = z * z + + xy = x * y + yz = y * z + zx = z * x + + xs = x * sin_angle + ys = y * sin_angle + zs = z * sin_angle + + rotation_matrix = copy_matrix(clean_matrix) + + rotation_matrix[0][0] = (one_minus_cos * xx) + cos_angle + rotation_matrix[0][1] = (one_minus_cos * xy) - zs + rotation_matrix[0][2] = (one_minus_cos * zx) + ys + + rotation_matrix[1][0] = (one_minus_cos * xy) + zs + rotation_matrix[1][1] = (one_minus_cos * yy) + cos_angle + rotation_matrix[1][2] = (one_minus_cos * yz) - xs + + rotation_matrix[2][0] = (one_minus_cos * zx) - ys + rotation_matrix[2][1] = (one_minus_cos * yz) + xs + rotation_matrix[2][2] = (one_minus_cos * zz) + cos_angle + + rotation_matrix[3][3] = 1.0 + self.data = multiply_matrices(rotation_matrix, self.data) + + def rotate_2d(self, x, y): + self.rotate(x, 0, 1.0, 0) + self.rotate(-y, math.cos(x), 0, math.sin(x)) + + def frustum(self, left, right, bottom, top, near, far): + deltax = right - left + deltay = top - bottom + deltaz = far - near + + frustum_matrix = copy_matrix(clean_matrix) + + frustum_matrix[0][0] = 2 * near / deltax + frustum_matrix[1][1] = 2 * near / deltay + + frustum_matrix[2][0] = (right + left) / deltax + frustum_matrix[2][1] = (top + bottom) / deltay + frustum_matrix[2][2] = -(near + far) / deltaz + + frustum_matrix[2][3] = -1.0 + frustum_matrix[3][2] = -2 * near * far / deltaz + + self.data = multiply_matrices(frustum_matrix, self.data) + + def perspective(self, fovy, aspect, near, far): + frustum_y = math.tan(math.radians(fovy) / 2) + frustum_x = frustum_y * aspect + + self.frustum(-frustum_x * near, frustum_x * near, -frustum_y * near, frustum_y * near, near, far) + + def orthographic(self, left, right, bottom, top, near, far): + deltax = right - left + deltay = top - bottom + deltaz = far - near + + orthographic_matrix = copy_matrix(identity_matrix) + + orthographic_matrix[0][0] = 2.0 / deltax + orthographic_matrix[3][0] = -(right + left) / deltax + + orthographic_matrix[1][1] = 2.0 / deltay + orthographic_matrix[3][1] = -(top + bottom) / deltay + + orthographic_matrix[2][2] = 2.0 / deltax + orthographic_matrix[3][2] = -(near + far) / deltaz + + self.data = multiply_matrices(orthographic_matrix, self.data) diff --git a/community/models/__init__.py b/community/models/__init__.py new file mode 100644 index 00000000..472191d7 --- /dev/null +++ b/community/models/__init__.py @@ -0,0 +1,34 @@ +# all possible models + +__all__ = [ + "cube", + "plant", + "liquid", + "leaves", + "glass", + "slab", + "torch", + "fire", + "stairs", + "flat", + "crop", + "soil", + "sign_post", + "door", + "ladder", + "sign", + "lever", + "pressure_plate", + "button", + "snow", + "cactus", + "tinted_glass", + "pig", + "zombie", + "skeleton", + "creeper", + "cow", + "curry", +] + +from . import * diff --git a/community/models/__pycache__/button.cpython-311.pyc b/community/models/__pycache__/button.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3f07348ca71ba60e23f676b7f7a8541e904de3e9 GIT binary patch literal 1271 zcma)3O>5gg5M9Z()AoH{$QcU{whSK7y$nfGRA*{}V6m%#e@`^(w)CLuRGSS@`? z?mqzeNPJ=wU$GTmwN=;+*v*jGt&sSQD+REL*h170b;LHHW^176U|eGtd5to!**fTY zSgX-M-bXYAYIfTnydl=`?VSqKy|RqkdfMypk`O{0kV071e#jJU@gf4s;PQ278Ff}9 z)|ApCjmS{U`+!@v6X(;7X8#J8Zg~W{Ww>$TM!4=4!>mm%N0CO%3GrW(OA)gFg188{ zMW>o!C}8;li}6}fTRjivRvj=ae4BDvK%Ed<&D*EAZpKvSeFa!eDy4#f{_`ikevN6H z>jj9)-I#WGMZk&Gsd^c86E<^ckYtr11MjlZBR28!)1YdFvCG&}8s{FDcDyu>BR`<5 z8lDF<3oa(Jlto#TCami6&`VS5v&v-eT|Y{~$+;Wn0sBVoVFvPW=sk1ZF|a%P2gipe z&Oz$sQ)tYb*E9{OJ7rEbbEZ)ecns|IqLk)N(JKeT!YI3gLND9>qE(uYir%$h7M+Dg)MI6?9Kl~AZb=q> teWcFGa4{n4J~Vg(nypswgy+ z(j$!+p}6V;ZrM)U&$gQVD_y(g73h}f){R?f(=CQ+OfE-}Myv_(Uz1A_M*juz5O9l5 zb%d#a^$)D34N}{D57ssvuqu4pa!H_0h^_YJeOwn)rdNFhSZyYyA_D!#57qiLW!*|I zKrmNR)~gr+$5yW#q|A-^!eum0OG75!veZL9^Rg3Kc7n*|d@YSKuafq>B#J_xGG30) zC`;*^*&^X#8YVF>`&H^C3G;br@>i}O#=-2&jWWu=kQk4KwduYeYR#O66H|uZH?W{Yl2x f6Qb?|`M9}(G}XLcal55*x4D7ZQQw+u0(bubr?2dg literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/cactus.cpython-311.pyc b/community/models/__pycache__/cactus.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1ec39392823313973300bfee29eb1b7320073fea GIT binary patch literal 1271 zcma)4O>5LZ7@kZvAN!H)T5A!#^qPwoZ&DkCBJ^Mp)Jq5~F-c<}AInTq>@EL76fb%a zPyU30zhI9sco2Fhy#0A-E}N0nor;{Z^$WT+T&{V$X) z1?on;Zh;!-I>&K~vZZ>H7s$Bv@)E-ypBm!DV$VO%8uIImh!E-$=1syRa9(7L_>0KE z7r>&Vw?^_9&+=j>!Oglaj6BaJXDgC>x?(25-FOZ_^V$h*DIuM@`D?$Dg2JqYEIzfbN$X8{)d4N!}MAe8!6F)YWEVpI;sg;J_oA(i^=Vpyw4ykFvbwIpJ( z79|ZA{d$6MBFu#tX323wQftaKo})>CcLm?I-LP|kI0gYv8Wo*Y-@?$k)M{H*bz5$UA zIx0RP5-km-u_%yIMCq)gA{BRL9ecA{!D#0AoO|va-x>S6rVS8`Z+|`=ew7e9W#W1$ z4Y@o9@&S3sLY`m=9=0$n5mwI=yxNuLEknWMr{<=E#q0F*5mGKO6L3uQ}z zyb;e^pvJk*aonP8sq=|(>*YCy4xbs~*`niLCk^?1LPQ94hIwt61Wt>L5q}UF_ySmz z^wvlo<1SBT5~|tmi$d;m$=QnJHC-~3P~E+Dg>_qSV?{RAE74AJwyv->;N2}>+(1`- z^Nj26=SJtIP6Cc*T`iE^KQL6^`2y4rvG$bLnk z+DqyceaYG*S$4in#X4zq3O(DkX5x*JGJYFd(}O-l$#?%3m*@%Y;re~u@%$1~&cI3CZ; znXw%wjvZF~SZSsGu@c%{snQC5fRI3{gai^2xI#!EcD3pvc8T1oqB5fb~p z&%JZcz4zGNt(Z2?dEWPVzs|jP&dm7phYufWqSrUy`pm+smz$b?%tqt&UWdGSt+}b` zpPRBx$)>E4H0YnmHzmz1Vb=VtLD&pD0Bivs1hxX(fQNt&0Na6wfk%K361G#NcfmRe zJO+FS_%QI@!1n-;1K$gLAMgb5{e)cU1F-&DY|lRO+=1-hP`$rJy_3KX0zU*i1w0LW z6!>A_8Q^2U4&XiHC`r-2uM&j6nVehhdK_;KJR;3t5W zfmeW6ffg_X>;!fJ!-U-Juf10P{|d)&RlBKY1QSGoF<=ic4(tW?5w=ilKdb@ZAaDpc z3>+cksQ-HxE$DuYViU+51&#s7ffK+<;1nU(O~RT6rhwOhGr(EGchY^1DyES+56l3w zz#MP^m?z}Ai?9m7CEyLWjfcvZE9B!gsa+t-fYr! z@DJnZja#CMDU*HHp&wcvep0}jQ13gGk zKOO%k`u`_ZotM+`Z(8zQtQ}?GsE*e9H!@3ezxkK%I$6h9;TR|5drrnfDg%}6I_N

Zt$8t*&UTo%-gz3DUca-?OZ%iI`^6o! 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 TJSpPV0T}M6i79^UKD?&ChF3F+ literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/crop.cpython-312.pyc b/community/models/__pycache__/crop.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7c79dba06608c2101ae566bba42b36943d80e06c GIT binary patch literal 1239 zcma)5zi-n(7(F|`?8I?G`Mq_`!or3sLPZ5)pkjcxd0R4N*sI0%}$r)Gg%yi<;E{ zkAa?TY-7EQnx#$5UgzbR3iChd8H@ZrC;ipt_j)t$vkLT9BS}Tv&Hpu zigKhFQKIM;U2tQ+DCAViF}p+y@f9~-N*;z(x+O)opjRfBeLM_lDNGKUyBCmwYqeSS znfTPpApRH|HKawYS6$r4b=qewAuIqopFfFp)@O$36mZznvsS{K5sw{4M@eQ#;!d(g zzz6R54b5tP=y1N0hGSPqbvFvbz@v<3-DAoU`fd`Z?fAk F%|9RJ08Rh^ literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/cube.cpython-311.pyc b/community/models/__pycache__/cube.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f84c88730e773e8a755e8c39f9396f7d175801b5 GIT binary patch literal 1261 zcma))zi-n(6vyw*@sIql8zAl6)e8$7f<{Ocs7O>uz+zd7jO`jrP8{7i72W(_AP@^I zh`$1fl_jI`gw&zxW~pMJ6YnnJu8CTd%jM(md-r{J?___m?GA$R{m-YPA1#DVdGK$T zOL6fL#5)ur4@KC+@FWrOG5%d-RKaagWt9s2AKvrvb4V@jmyj#xL)zvm5{GWP z?iMtduxUW!Nm2Jy5S}cTvRTNN%#@A7+3UF0lPqAYZiji6rBO^--9L_L5x*TxbCwoq zK4Eo-hhd)6h}8~z6GZ7G865}NEM{NP1@wR}pM>}QR}9MiNBhqX4*mT+oQ>fi=0B%- zLW42$i>W_OCvg}Y6}!-381E**IQGYR6lcum&D@=yTv`txG0WmTx&!-S__N=DM#C6a z&YiMbZS~9ELUo+dtSr0K8w+XM6&WETwG*9qcL{e%)N(q1{@#1vd-qxAQ^)BbSU>)JIXZ12bjE{!%UY7F z6Cj^Zf&!G_0K;2Lv_OY93Ll6Bcs<2em}rtBHDf~p-AXAB zT9K=q7^cKLyya}ARPv2E%kGV=3U6(cg*E3lov3nxt;3pgIrGNvR;J`cueZD%gqEc7 zsljh#1I+cD2xZP|oj(xk%%}YSRN%F!l1c{plh1tp@~O@B5@hAVr)^%5aOkz`Zb_pt zn?#h1%etq6c(yF%)0mg6j1A-ITT&Zo9x+z8<08+qgiu!Zj|nZw`{ATuS(z1MR(E(9 z7X?jN?Xq`Kl8w{hagn z2}jwO#L-c?3l3wln?@rNj*5ijEaYbHPiEKlBS=hhvPXAdE{2DF1ZZ@O@!Y*vb?00C zs<&Vrx3cE8QyGno^zFGeXbfG`8{KfUs(sl<+6!FcgVo(Q)V}%D VRUKa1sqyyehSFW_gG&eC7 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 literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/door.cpython-311.pyc b/community/models/__pycache__/door.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..51ac2301b1c61dc0f15a2403aa68e3be2f32e2be GIT binary patch literal 1206 zcma))&uiN-6vrjUKNH6dTh?>0zU;Ew*cu9DrGu5hwu>sI>&<_~Mtj>X zV}He9e?g9(PldutZ-JiH)1H*nYPxhpkw1L(^nFiHBHy~*HiGf<&zHj!6`^y!xEaPm zTzvxZ8AZrL5%zGTcnatid}@q5Ek;r6D+a29nxHOd2%13M)4^eh_5Y}Q2Kd^-H)ls^ zTd>gCO$o?u z^j#%O$i#oL?=?y1Dhsc;)cJi!+`8Oyqf4EyI!qobRdY)7_6RK=dp4jNf8smPmt$ht z#9Z~_i5TYt%Kv#1u1ck~QQ$v4;p5kUn%v)@*|{80i|;fzaILzN(_qXd0VU(Sw&fx` zu8o8Z!{R-uwKxqJTUgT~=n8s3*L&ep{~d#Le`ojA{(--ng~bR8GygTsVj7H?pHKWzGA3bgm~TOc zA=!$95%EV^L{jEQQ2z1c_}Y91fg&Z_bQ9`g_}Fj2tc5YIoQGwn+US*b)pkmwGP|WF zVrRBfS~DFfFYy%b!>k0?6tk|;SEi^p>my}*il4)*1lJUh?3i>e@5i0|)3!|n_T$f&qhl4JGw$4&z9Ltj zfP6*~@=%0594Vdxyak^cBd;B!sPz>Cssh^rHG#Uo4xr{~pfH60Kh!)Obf(ZPu`9SG z(5_MQIy1-J+P~mCzHzPd<*ug#+5#rwCjMQ9DBKe*L27x-wHi?=+QdYmNYpK$y5_f; zY#|H(slHPrm765IzJ#a zKN5B}p!~m+;Hp$gYXwV=H>RtAcvRmP&%>y|{DNUZ*uJD8Afz& literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/fire.cpython-311.pyc b/community/models/__pycache__/fire.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ee5e69e3fccb796cbef131713a4ec03d5b661af8 GIT binary patch literal 922 zcmZut%WB&|6rGVJ>tR_jNz-+<+VlfT8&e1^T{HyJZiK+7(pVMM!^}t_+37F3PB*2y z(jN%q3%m+Kt3V5(J3$tuS(M%x*%lQZ&m7JlXk{-hWY&JSXRYIuKy5R#5WQB-`C=#Uzjb&+N>{(;smuBoJ+nKMRPC8nC zAQEjFDr8L+38aW_l@y2+i0kq0T3C$kJ-X-Ir+qyh8wlQ)-xu@G1BAXeWc`#?aGyi) z5e3LW0d{a8ITH8)Tn>?=geVwXVnA7-B5(*OJ3~-a!TTsXD&#bg>!a*w3*9zOe@d|T zm2KYsA-{fj7vHXK+kCXmfE3!zOByEtS{QHd}Qgw6s?)Xg5q0Hx#;s z+I0)sb&HK%x1j&;?xy$3d&4%X;6K0x;;n+^l&Zk{p#7@}y3uTzcETn)wsk%#sF$+b zqa-c3*%5!i)rigf@-5*?7<-JZO5@URN_9Vr<0v4M@yQvX1v#JP8HSq}Z z7`NCvFNo4`cIL$;VV}@_^Dz&HFQ2+^7__@D4vtqip_dRh$pR8HcOFslBwsve&p;?+vQKwmE(T`-z;b{wuC48ARBufxvo^LW zwbsU!Qd>LK=*F}v{ceb)7<2r-wWY2+lD?wJ-2_Sd96xUjR75LZ7@nCVo9u2jU0UnKORu^314LX4Md_i7Pz4QvWlUycARo(2Qd+#^Ux?n? zi}))F{(?QG!9&4A@fPUGo_uF^yHRK6eR!Vdop+x3IvNcStna_i=Z^?NKc%=|+M3)> zfqX(C@=%C991@Q}X;6BEJR?G(c7XwPK;rd)8A?keo(a0Aw5hZeTF1!kzy1Yr=!I+F ztWvHgYx3ig%itC0!0sbx^H%++tce3t8K!Yw(zfvMYXh6SgYSWwQgqOm&>oHb@FWDbhgMvT*P@Mnt_x-p7T&Nj`%>sIE!W{G%1<*hHl{x=K(A&UQ7dx5kxS54I|^wnmjvJ3H0z+IFgb+e73XUgEcK vYK1^rLwi7$Xx!R}>_hW8oLV6eXgZ`C$lk*x-i1>u1OlyXQaN(-9mxL!Hl4E- literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/flat.cpython-312.pyc b/community/models/__pycache__/flat.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fd02297c586f5abbd6c5b1169aff7cbf88a534e9 GIT binary patch literal 689 zcmZ8b&ui2`6rPzRo9u2jU0Um0z!3r7z%b3i@Kz=MUNpWxSuPA!6 zH~)%)S1&!r!9$^k;%#Y9_S84o?M8j@KECgp_ue-@27?}g`u^wZWQ!nlslx`?|1?a%;2hO;md}S?IE7gK)|MlKnXx|&wcL1^YOj<{~cQJQK2~WRT}P6w(nNXc%YF_?RXo6W`Dc`~ltWJ%8-K z5wPy>?7n(=;P2)^nZjY=AM!lnG!=d^_0u?G0i6`v@WX&@M>J)AnujbA{v@Hrqv`C{ zdICn7u%~18epzrjB97T>ep+-%C38Bm04SZ%BY=6yC!N;F6U3a@A>=QJva&U?|(iW{%9d|+64cW zxeym0LA*m0d5B^U!#{ybqr_`bjkaPEV^5C})jwmPA!rI(f^ESL(C`d!bVd9>8lDM0 zTllWn6WS5nkTg7t_Fp3R&Z~0*Gd^*(v#XhZePbFZ0hJswctj-N+DczjqDY!lj};44 zE2li@nqB2YGi7eVTh3NaWnbyDs9wpc@YX_kV`=i6PETIRUvnt;AMZWiKk)ama5jd<+<(Ec zm<40*=Tm>2OrkJ2%y(eIFxrWOapaFP8l~J9Gu@k>Tv`tyGfSggwhfIjT>Lkn)-cAU zvsrY@jecR59j7o$%P#cNxm$E=3u#*=8PvK)v|7`9q-fWDM4sU}-iKWZt|{uCIUsY? ouLp?i&haDIrQn(Z>K#&an)2;A-hy2Ut|_2=lN3(#V*_~dziI3f_W%F@ literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/glass.cpython-312.pyc b/community/models/__pycache__/glass.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c6a7145fe1e0d4b6d4fe62b9176ec8cb6992a2f9 GIT binary patch literal 1148 zcmaJZbh0tje{9ERN zT%G{=fFk6f2zwab1RgCSUMtd~R!m~-=`o7*&lu1UXbQ9hwgq+o4bK2YSH%BA!!to= z3*9yL1a|~(NHjca-goc3Iw#=psjHn`JO2HZX}|=i5Evv#?8)ad|`AsLPoM5Z4;#|(W@w=5NInlKjw}a4v z)I+8>H?juCYEFbQ=eEx7i*-6=&Ht&uZ80U44D=@-oAqnRtVSLDvaQ22)dYlHFFQn-#Y^3clOVcExj92|5%5r)^Oy4T6UqA&fTJ0TS(g~$)MIXqScz-BSrh7kH~Xe;r-=Z_sjwLiTW1tR_jNz-+<+VlfT8&e2{ED{QBH$q@k%|sQ|!_3Gb+37F3PB$gH z(jN%)3%n{qt3V5(J3$tuS(M%x*%lQZ&m7J zGaw%kK^`L5!$k2EI0HCpggh-mWbg?CsuDGcLqOFVf~!m2N7d8e&X9L~R6T>3uaRrL z`K7?iFJ1fYFa7;9xcYu`*N${MT{}|-Q=_$g!^F%j3y=u6r-uYqog`z5`4k*NQY#ri1Q-@xLeK#&cEH85?%$n)Rq) zLB{6+qghegod_>$J?67;@s8G7lmwiwqRAo@Q8UbwBqo&cdU8%#K`&;O1_|$*Pq1=CQbaH&^ALZd9g~r@}#qx*+Dff%H zpT-#tgR|lQCJgC86r|Kob3zmDCjo)ipUf{GjAvji5_-t?p)-cVzW_7?jB(}cmZNHC zQreZZQ|gs5F15&JSXRYIuKy5R#5WQB;3QV>x+!heL zM!Co&r7sS0m(U5ei2iFrX??lQ;%cy)me|?F9dd@u4N>)srRiEPe=4x| znQLGFp}&5Ri*J|L-9cCLjWTC&Gup_Pti8B{aT~SCj;b5#+MT);Iyxwqv>zsmTMFG$ z?YkxIyXD5dThjk`_tOXEgJIiM@E_m;`PRW|&UD~IF#gpf-D#9`i*|y{1Bo62keqG^v8N)C}?@i9^b`n4M8p((^@;^SF%jj0>x!L7uaa z3x~fUVVp&aGm=!4e?+(K$J`x1edxd9(C$AudVYN3ALT)n!eH*dV0pwy%KftN(>S96 zIV}(1!hjw`B&B|uhcw}SLPFU7pjh4+k3gytddT)+G6v@%z-ojsZk*kE((KG?yRmj^ zy)mY>);N3hE*<} literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/leaves.cpython-311.pyc b/community/models/__pycache__/leaves.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6070cda5a8e4e878d5cacfcf2785db943449cc3f GIT binary patch literal 1263 zcma)*zi-n(6vyxE_(y)&4JGZ|)e8$7f<{OcQjn;SfW@*D8Q;}da^mRDiRkA40)bdy zLHrd+j7%AgC!`KlH%k=*op^T*z9wo>FPBfg@A>=QJ>j(Ux#mt=%f{EG4_oZ5#uuknv#~JE!mdr08QTnM_0!Gqv>1V z>q*}w9jRT(t%jy=ll}|j-FbP2Va6w(etJ3cuWw8TC83f-2DgYLyq?lmlq_mYs>g-} zs+F@j=!#wCWHV(J;SFair?PMKSygXjRd{1zb75`r>rPZTsn)SJdDHXS`&L6W9lhS_ z=^(Tc^^h6jiEO}J&&jaKd9Bm?a-9sBctaJu7E{(nf&asMv3?GjE&L6dD`!L27FQY^ zdhM#4vvA61A*0j0>Zu?)uB?QQqxoxE8F3nNzOttCNLbrZmZk}zj92{yWjTF2o@G4A zlWfYXjtHYHV}w^Oe-n~q8jlxYI;Z?AI)@q1#VC3Zyy8$EJU)0fIt&i7Xg-0)Jb2Es zn1vG_h6~E?&5keZhme}5bf4`)XYmi=zX7$5 zF)rQhqFZkDi(c7r3#+u9!YJLlMYpz*zEf(0+R!z<)(uB1+I1gkPw^6uV3(4&6t!aw sv?c1-1ElRQ@gvx!)y}Rb{{59{U`eRpkii2Y3Ad;06-yR1BGqF<0@X^{ z9JC@=G1*Lsg?r1{N~z=? zMm=P@cq1Dy)??CbVs7i~zFen6CcaMvx5bpSu|R+FQLJA>W(j?RCUZVyZINkk=(ekF z&VmV_28>Sfs;8WAQJD!p3TLlrrN?Q&`BIwBLLqI3S(+vhWxVRoDa+~GqiM#IJjo`! z>IgT?G8Xa5;ctQ{nZ!r)Ae~YE1zo}n=xX%jf&Yp_x&Qd!`RLF;$imqe8gu^z%VHLc zxt~w{aWbJ{aGdYKgdyFFgE95TSwvIrr!<&Tes8+CvK~TcmePH;3!TLu!rudG4P#t7 z+eNqB>KDDT;}m9T*@a#@cZ+UqA#JB5gId>!R%^OViuOexk!QHVqt#v8=79V}{fhx2 d`xSn)x*_L~q9anf72a9hklH5i95#SS{sPVo?gsz> literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/lever.cpython-311.pyc b/community/models/__pycache__/lever.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a3bf6238eeb4334f9cbbbd090c68e1d0a82a8e6e GIT binary patch literal 1270 zcma)3&x_MQ6rQAQ(jRGB*1G4t=HkVhh;?BR1$PnDO9+&h%*H_4l$m64Z}}?}z3D~# zBSi2o=rQKBu!m)Dg*~|^-@LRlwJ3Cw`S{*@-}mMX^R?ga5?DWfe?I-*B;-;A>t(LU z&3hmpNJv}~YOWUQt`55ayBQI;6_K#gol6>hraFdLJrQIrvLQvBECN`&mcATI)L z*{Nn2N?5(Xa=cMA*3W~vbqCB!-?m&8P$$Js^XfjX%P})WUkOf=DXC}J!TzIk#OR4s$RzY8K3)%&a%osERJ zg1MZqUd0GFvU}wqV_w4N9-~QC8Zz-0r5^FApTDAICyYJL*U~umD{0S9<2VW^8LNIH&vzxrQCc&67v>+?O2e?*75y(Y-99&zg5->SOgM8C{Ku dx)0>T<^|GHi+;uJmdfqs1!_lqYq2rR{sWn&>=6I} literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/liquid.cpython-311.pyc b/community/models/__pycache__/liquid.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a820c97cbc99963bf90cc6b4d8644ddb4fe1c92d GIT binary patch literal 1217 zcma)5F>ljA6uxs3J5C%oDy3rV>V<_3K`o>%9jK6i#j+F``)VvXak#T9y7^atV1otm zE0FjF8I7k(MJnAQb)pmRUR+<=0p)!D{J!tL_wJn&e;bVk1jf(5Uykb@A?K3Z45JCI zK0xr1M8qQz^(Z_wxI1unW8(E<5@}y4UHw%S`|qw}_Xt+OT@*VVa| z9qXuKiniwVH)vn%(&dJHQ+J?$TSMAvPWR#wj&qlr(%6F2<;vPd;Q#zdj$ba9e`N*j z%B9PPa;1eM$E=4r4`yN>a5l?pOOf!jHWD!ji#M$9#c3c!V@-=tTFo#^(}Ny9ATk*IC)Hi(j0JUI!{f{E|s3VI;dhv8%YwSaX0*}?O}BmW=^ zizyTq{tKSPJeUeUpZn8f#=_t@--8ZAwigFe=1;STrNU2>cSRCCoS$CzpMX@PY@a`X z%JMT1e*l&pO6gK3TldOgwKXoSYG9W})wjxCWp9_mGs`YbSl1X`& zNyo3ChlbKvLW&fmDBUUPQZYN{>^dn}t)J(;c{8*A_&FL42&{X%Ki>Z75^^HQ)iRsl z;v)o~NJKmmQIAHNr$O9-OP>?3J10@+D+SaMyNCv&iP!@)JOdnk1N-xh}$ zTZkixhSyu$&iL7xIO8kFI^CZ2*lmK!WgUef?jgzI&qUcoi8?>oL6^CITMKMB69YxW0wVJJ}(Rtn8I$2YVdG*}N zj(t=!MWtDO1NmY%E;GfOx&giG8d9k_`ssaKCoby?qXb81$|@u9fB7udZom@L5>AiR4LEPCX%Px*Kg`lJiDJg<$zja$ z_-MAuc#NjHl(W z8c#~A8rY>-^+sj4vTv8eW6Li4=LXSYTGOb#HzRYZ{UVd|Dbe<7`nbIzXKUp^q;_h0 Pr@bL{OZ#B69T@%(TUz3N literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/pig.cpython-311.pyc b/community/models/__pycache__/pig.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1fe3daea29fbe9809b3b02930d438ebd1dc864e7 GIT binary patch literal 9581 zcmb7IOK@A&8P+*|M2YPX3<(et$K*lmgoI!SA&^9tZQ1cd@(cMXN0ueUmL*&Em0xlo z&X$>W#UhJ#+9@+k2infC=u8(Z%&=(7jt=QGW0;acL6kyDhhYK34E_J_UfrXsBQlL4 z-}(Ok`(Nkk=veZvYif45=;!Tke|35H<1W|7Y~+7xE%Nnxnag$E6?2WbVq#3tKRN9h zD~l1v%3cwK<-iJHC2$+i4ctyxNl`msRRODkHNc&~dk8sd7pyyBW$fOcSHx;5_CCbk z58Msh1AGAZAn+mJUf{#PeZc*|I^Y4qYN}Tc>k;5V;342);1S@Xz@xwhU?cDt@Hin? zy3_pszgmr*K1TIUp!!MRb`ai8_ls1q6PaDWZeS144-5c%3At_`tbX7Ca1i)B zFi3be-G`{+FfvDgqrfrXI4}g9AmqB2V1(7$v-m?$ecH<+0eHt1 zI+krL%jMsj( z#XBg@wyT@PihA3{s5eHn9j2+mOYKYbcIT>oR`$}+&EI+qxIHfQe^J7L#YtLkWnRA<)L?i%_Jdc{p++n%d1f6VX ztk^1_kIcolDi#te>7_0AO59jVMB|yQ9ZT`Ga5SAZVwtU-nVCo|F+Uw%iKLcEE1!u+ zVvS{}Yn|}V@(2IsrunX*3EthrNwgxq*fjR>Sm?cy7N9QBd1%X4Wn}xymlusM?6Lc7F1r>MFd{z6yHh zXtVV57A_kiALU=1+ndG#vW>kAk1&*%FzfRw%>f+_>_UaZRK=8O2UE7v(M*}8imBQh z?C7mVwX2)8OPP1bF12qpid`%}x$P*}h}x(shJ7Izz1_L%>rGeRyz!pLx_AESF%G)u zVe@;_x@Z1o-6x0He~5r?ps`4%{x3V;_rNxe*cor$c=^BYzxsD8<588Ns+tT31Qivt z?h|-%Hz*w)5NY?Kd&-{3WXQ2~b1HLQ19u^FlOfXHr#X?evj)EA9{SLe`_1e8^SQ@3 zN@sfcJqx*3fsnU29C*H;RpQkKdg+$*l%W_vRQ|F zn0E^*Vy9qSfp%(hld+!j9p_o7E}~Cxg~Dh|q4Ml`%*m_?@CqRk412;Xim|#?o{CSO zvOi$_c@v)qtoQB*)`tsfIqIh>Qo$JW7on*FDFzwTT)efZdS@t+>p#u+=~gI9m? zlMhdRVr4v|GE`NQ)v|<&ig8amvhXr5(9r>rcCUOSPgIa&>*iGEyawJph_v5E#S^iL z|PsZ@A9*HOikX$R8_t@NVa z2rnw8OlFh~hdoSzS)!TQ$`1aK?4pgrRHJB<+m3>bsNSj=wyAo%bH9K4)8}vc>eUmli$R?Cw~LG&NG-VcP{?@3VrO%Ss54XjPnm|PJI5(XI6$sWf*o%tEKP`$X~6S z1vi+Nqt%tAOgv;Zse-yzP+Wz>RJWrtk!}qZJVzC z+sbIOGk!_;<~K3=+KUXI$}sGzCc`m9Ma4LWjwZaSBXo37tS}NsQ{~vR7+}`XwBIBK z7^)XdWFO5Z>1aO7le-zLqp9A`cyZMw2D8ZyS7sUe@PG?%ExaBo9HuI!Ok}f3$5QD< zy-O8SwYAhwJnheN0+DQ4*}DuNG7wjJ(^CX z60x|E*{YaI&&M;bxxS`6*LUsFXG6gZ`9t0|e`g@nmX0pZQH4yX&qz-jk-1E0X(2S1 zn2$#zmzV0Pel%V`O@Cqt&81`UR3@~Lm_E6X{my-k?B!Jaf-yj41^vr((Km>%%7hTN zcGh02y1ClH)c(?v3^Z&10t`;#_rY%!t&6VVIE-jT8-5lvy zy4=lGg|H18s(bMXoC5JV;LG(tU9B5La<5I+xMY;WOlPE|D|wv*dIx(`UQSk<+>O&n;dcr*p|% z81xGA7Oz3CSZ-xOC#$U@>tjhLSA62d4wiJX(ILWJEa@cDCA@x?bkcLG1xnB_5CyRZ;*UtrY($O!*A?f6KzX(BEs+(}E)BR!&j+K597~r}(86Oa46stol=_ETO`bUtZk--s>9%V@=_EcSreiGWBoPyx(=6$vds-wDEa@aPE>e&-5@K+cV{{Un6$wZ>NzRH5NILN* zMKH+)buye3Nk}@GOA2p_vvhJbAzC1X`$emh_)}sKo={3;euOm7iII7(tdp^MVWe5o z$x>SMEwZGOfkkoIU`Z!4hG<@5Nhd8!Vr-cuoouAUIHcKS(Y3}gI_X&xsdbigGQTbs zUSLTl#tUNUDoZ+9xhjUdk|dpsc;#9vOFBs`i!7v`HaXeGF*=!QlPi#PveqVhe4M3| zfKN_A(n-uG*C6R+-6sR>Tu>+7ZL$}VFD3e%WUO6I!jov1EghV$lim)QzQ~eJ7B9;F zE|zpM*d15b1R|72RBpZ;UeaO;CphJ#9O7zLjL5|T$_n=G$S<=Z| zP^O1j(#hhm%#5<6ljTtv46&q>;gDRt#F9>C`s5moTqZ8Fq?6=j**b$Pjre9{B*BtSq6xV%%aTrdret%HrQW1W&y^;Nb8<1wl1?&d zxxC1dPF5G?YKA49WHWMjg(aPguE^{fOF9W8u0qmDHY@$>XsVIk tbs2@EllZ#KLej~Vb=iA`3+kjNEBhezM`XW~Y#+EHuT}7WMjw5r{2xhJ@$mov literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/pig.cpython-312.pyc b/community/models/__pycache__/pig.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6ad9e59f06c9c1d061f90e79bf27741387241e21 GIT binary patch literal 7311 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 GEcy#0xx{b) literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/pressure_plate.cpython-311.pyc b/community/models/__pycache__/pressure_plate.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6a8a2c6acfc71bd79654f4511e7671fd25bf3166 GIT binary patch literal 741 zcmZ8bO>5LZ7@nCVo9u2jU0UnKORu^314LX4MeyKaQ9(msiJ55(uupnT!yu%imv*9uS0nN^!TeHMyAs z`GhF)5XBy*#3N7|lpZ0^h!EAzFrW@dya6ynX^F%$K@XHRmA0t$3c17AzaS1hbM5O@ z%GGR5eq3-FyaFBA-GvKo$i8f?STE&(Yyah|7kXbY)$6Bwxtdau0qOvb`usnV;sACBiQ_6Qbg5 zQ6xdh9u}v!)?=`$ggxQAkbt4YM}SVl7&p##J#Mz9wcU)iYO}E>wb3{`_4vwm>R~rP z+9tIlH{XH$KSZs! AW&i*H literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/pressure_plate.cpython-312.pyc b/community/models/__pycache__/pressure_plate.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d5f7318a7043e25fb5dca9f7253a064224145f1f GIT binary patch literal 699 zcmZ8bO>5LZ7@nCVo9u2jU0T~qFTLjC4-j!J7D3RWsL+PMGEJs2kS}JE;@;w~5WVTm zUs3St#bX>i6g(7fOM7ZheJ8u!R0rON=Xu_bXMT)E0|f8;)tBRKg3uo&ZlAU!m(PKG zL?QA}h&>zj5)bt&n&o=w7SMR$DX6?Z5d8Vd$xApD!}b zCQI`Bl&jbU=)i6VPPw6cWi41I)q-o^>9-fUe#=^~+wSCIdl|FJn@@O8Mg0fnzg{a> zo~!fDSTR>W|NKe4UlVSr^%d;9eK{;S%|t;t%Svf?BA7`t7So_QV$z5bD#UU$sRA|H z5Ar05L&k+1pDQhA!a`==#-@2mV_D z>;CTEi)Z`(ULI5_92Wjdo=2Rf!Y>OyjWZU|<8lXn7_gm)rp!tR_jNz-+<+VlfT8&e1^Su_NiZiK+7(nJ;2!^}t_+37F3PB)>u z(jN%q3%n{qt3V2&J3$tuS(M%x*%lQZ&m7JEf_3xf^7Q)vp*t>COIeZ! z3gj~ikb?s3;6QRDI0HCxh#VzE!Qcx9lm#jRhk&v(1XmThkFuk}ohI)3C_7r9zeBch z@=Jo3U)$#WU-J8>clqP`z8&dyx^kuzrba9Kn(~=j7;?rhTPd%kZMN>(Xk{-hWYuB literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/sign.cpython-312.pyc b/community/models/__pycache__/sign.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..279a21a3f219cc5bf77006398b7ae3574b46678b GIT binary patch literal 844 zcmZutyKdA#6rJ(f>&JSXRYIuKy5R#5WQB-86hsuzSe91Co)`<*_Lu3@LhwHSK0o<1Lg>37o2RXVn-YTe zC_)~Ju!keXQ@}^yYK%NBM$za422>?#632k5HwIOge2A*2L(Y)7A*!CSG+pcEPX+cq zaqX)=7`~ntW2xAZKMj zNnUZgC*hLo30s8qYr?fS4H#ROrgbPv&9F$*BqEgY*(sqFIa`zkORA*E8Mg!ti-Jas zJM2vmC3(C!4bqyhkLX5x%D_$7@S1_s}aVyb#|LcyEAL-*4k+Cg?OWSG8>oHPN%<tR_jNz-+<+VlfT8&e2{LK*^1H$q@kX`+hiVP>R|?DQ91r<>4S z=??_*1zr`QRUn1XogjNtyXAb9_Irq-BuEt{n!Mgc#dHQ{T&>a`6r7Xz< z1@ajM$Uy;ia3DDnoB2uWj@GFZun`yZmu|-;Q)UT{%+-8w7 zUdrYkC23xpo$xPeHDWWr_&{nUj6KGd(YWw=RQIzujsikiJvk#ZC+D+y#-cpRQdS#W z`dLN;R$J_&7er||JM-d#u&?NW|Cz@_|GE2~LAm?t;O(0u_aO6&1R68d#CvxOz4xn&`XG$WC4kp%c3ylPv+0&7mwNtaEqAi(_Lte;jnK2%>ZLuS=;5P z+M1MRWo(sdrHxCavUbYRt!b5dGelC17x)wGO5jG)=*kmmfhNraN&5@@5_TnUBZ0If al?D$#UEp2VmB5Vz!rM}5@gLoRq5lEiQ{grM literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/sign_post.cpython-312.pyc b/community/models/__pycache__/sign_post.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9c3ca934f243ea063cc123b9c9bc44a303177825 GIT binary patch literal 849 zcmZutO>5LZ7@o-{n~%+=OKUy%nu|X`w2N2-L5l~yguoJ$X$$q|B+RLxP`oYeLF_?%XR^D&;PAc=@AJH$$(QNWLhwHSK0o<1Lg>37o2RXVn-YTe zC_)~Ju!keXQ@}^yYK%NBM$za422>?#632k5HwIOge2A*2L(Y)7A*!CSG+pcEPX+cq zaqX)=7`~ntW2xAZKMj zNnUZgC*hLo30s8qYr?fS4H#ROrgbPv&9F$*BqEgY*(sqFIa`zkORA*E8Mg!ti-Jas zJM2vmC3(C!4bqyhkLX5x%y#YQeHf0xSp={eVT@a6x0$p%v&L?% zoknksX`{8yUNgD0oyNQ#BPGQgzwK;gYIl^cXm&kA$|1)OI|J2G8cT?GIo|IK#9if` IL-%0OUyWnND*ylh literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/skeleton.cpython-311.pyc b/community/models/__pycache__/skeleton.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e8469c3739aaa99f9db65f227af3f5062c7eea50 GIT binary patch literal 9068 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 YJr37R4 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 literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/slab.cpython-311.pyc b/community/models/__pycache__/slab.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f8d2dd8a1f60da59aeef9095e6eb4b1eaf3e87bd GIT binary patch literal 1324 zcma)4&x_MQ6rLnalm19sYj@9k&Bcp15xWbEBDjm7UP7Q`lWYv6O_@m-_m=-c6fb%a z{|dpspvRb#u!m(&1{MVOwrwHW3X(6S0NZ25dS_P;@Y^v5UM$ znQuA<=q#+&*hAh&90+VWW^m^Pv4<}&R5;^fTRX4M{NpRtfFa1_cvXc0+?Ci}d{Lb% zd7=hvTnl9m#XN*=%!-8Eah;)=6#r-MHM85oRX5rpNcVr{q~vBdy33L@lR0DvLj2dS zCVS-Gw=r=M=oU^j!%)EL3svJA#isZ)Tz2h%S<$yHmj%=bvE4YokK=4i`Ttvj-Jnt` z80g=>{KZjN>QUk`wvr|b zpG#YQnj~=$QdSO5LYjqdCi9fVS)9&T+2*02rZiw>kG=MScot1gykrrwFXR%=K(3zn z58PJ_+TFeVgQth?e(Eo#V9ea-G>xb?Wo|Zir|~TGz2j^LPUwd_kv9$9X&QtHb6MgY z-J73YnGYecNWw>S8+;X5>=!_#DT-3`hIyyx5Atr&?&n5fTDe~I?&h7!B-&P?jw)SK zwMx@1HE&e|q8=zqJI?Us1%?TqIO=&b@y{Wm0yEn{kOIO|8j)QdnXH81hySclhq?xSoh=UOS_10vM zy!*CDJP33PrzYa5fYleO$7`f6J`I!IIPj|I+muU!>x9^8o!{r{Y)sg{TY}RfQYs?Q zpMGHL$C#K*FF-ICW71}ffJ3KUb#vm+=-emKEU$Vp36_8(XeaikkvGl4D5V}v{iA#H z<+b?`3X3#)M7F_KfkWQ`)T*K=r9CXVWq(lg%1*y9O4BN|(!N`CYZIwkB_7q9iq%@x yEL^lN2M8Z1mGXRj*OoED-_hW5gzz4ayXzZB8y6kMZCA?H`UYx<-`ZpZqx=DA@bgvx literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/snow.cpython-311.pyc b/community/models/__pycache__/snow.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7817b1697a07c855e6dc6e09580612b9a91248d4 GIT binary patch literal 786 zcmZ8bO>5LZ7@nCVn{0MBU0SOid(FikAmUmmiU*6(3K{}S%uHh-AInTq?Jej2fuc9P zh`*xXFW6%Y9t01?Tc9U<@}1eZ(VfgZc|P8E=KVaG*a+6w-ycto2tq%l_`9@@Tpt6u zKooh1Vh>Z|5jYwgooZB%NQ6BjLe%(#0SAD@8vrwvmPkAkw59Y=X^YxN$Q>R3f=AI~ zSG!uh_2ZJuR~7W;tV_RNavf54tbW{(mD2b}uDe(1hU~hP+jsX;F?FL#H{`0jn+2hc zv@<@CGi-qQzo+Edb9LSuYv$@#AKuILZN@FxzJ^10*o+DuWMUC;mKDvo7vWiB#$q0p zuUTV6Ngza5nv|g|9fo<5#FTN-Oivjv*t_{67jY5inP_Y&!#w9yG>&)^&^U|cr$JIO z@daJO4Cv-bc;9~^pxxg;c=q(rKgh!}g^Pv%oaYe_QsEa1KaDdM1}DWHOc=7gC`g%~ z=9DGE7g_%H-s0@WdH_b5u!npX?!|D#IY6snjB97R8r56VYFyh}m04Sp%BY>4YSdat zyIYext)UUE)r<+LhV2xQS9pnE!mbqpfr49PiKgusk$ngs!LAhofzTn9EwkH8ybHTl P2n3>SQaSSDJ21{4rbfE` literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/snow.cpython-312.pyc b/community/models/__pycache__/snow.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2b15fc28a906ff103e0c772f7822f537f3232a5a GIT binary patch literal 744 zcmZ9GJ#W-N5QcZx_SxsVb502X%Cv6y0SIwKL?8+x#D@fyrIX{`7)$;*?b?Cs%&$Pu zLC3F%L`y?yED9uwh|WqXQZc({&TuR3yYsv=vol{N6C1(#{QJZ46N1oB34f2)1s9JY zc#A0V5XBy*#3OJuxH{FS9+3!pMue#G5rYmui8p}AR4kQvCa|S=sMuQC?&#?+7>Vw= z+SzK-k5evZD(THxm;HXqb;!D7^>9O0O5-0~cdxP=*mWzn@9t4W>PMB`z*Tp*3qoDc z&iFv?up#FEp2D@~>by7Bk*lA*e<#nk8MkEnS`OV|Gb(tHiABI!Ry5-t!ewK|Vjh-9 ztTCb_5TYwh%21XL!#qi1%D8BzCyW>D^?Z?wxQO#iG`7Sr&p8#1BVGnH&Z7BAkd#b( zLKmwn8fPpFj*C6mFl2jCkTO5b zDNBSevi#MJ#q!d+1xA^$+k6-P#c;(DNULFtYiGL})mzhQT-#ffSzD9JsGXf^)LKZp zUXyFBp%Jasj0vfR=Tk&p;08Yj^9uQjrsrcs_QALVhC?b_^3?|K0&bHx4&Q+>e*iiz BtqK4D literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/soil.cpython-311.pyc b/community/models/__pycache__/soil.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..48a8f0c6bc57f46a551bce79447265896989c654 GIT binary patch literal 1332 zcma)5&x_MQ6rM?%roYnGx~_ZNYc7I#6EO#LD<8x7YQr~?#VZ=X{K9NaPsEM_ul*7n>Q)_Y#1#9>)W4?hqpCCPK2{u zdP&Yd0C`J%ViTX*)K_c;whFuEt9~t1LTYOv@wHDBu#TuBHV~VLEx@{62SpqG1$K}x zP{!-F4mtyK3+y8AA@(b*+YSHP0Wk;9&lH$(*HljzGynX`RA2})XqDL?7OO$l?BI*R zy~%=!=%Nsrbg>z_C>AbMW3&p$6W5vSQyuk>v)7tk<%(v@v*lRGB*+ujB&*fcFe~$7 zp{$l}CB8KIT6a0X8mlg1cFNy?kdpkeSY3Sf%TOkZ)nr4+^raT&z!HpJF1|8>x=L); zPVeA4u~<{ItiY@>DXkdj-@g;r9Qgs`dH*P2)8Nf;lJIC6C1akqgzF^<^LgIouU$VH zhr=T`o(231Ifog@#h!Q9dBLIFdARfB(Y~{jc(V~S=FU@=gv=drXF734(Kztj!|66m z=mp!MI|`gp;s-HzcoN08CdU_zdk~n#!F{#`eJO1I8=z1rrCE27wzFP8?PRT9s%H%& z)w1sOv|Tiax|Jz63r$tjLe&fLimSj?;nqSmti?)|X8 z=`^BW&^hdYE_NT?^<=Svn1xYFJ(?xyt?}%_ya$PC8r>&b&=$>f^*Ic}K6LBpRp<-uJ$l+3aV_>Jk{=et$gr*&^hW2Uo*b zlZy{P-ja~GBvf1_R9zL82CEfnVJlW+#nodH>Yo(AHll%OB6bkFfNi%8iXO%d_K`Oz z^KI7vorSdqZR7*Qp}@9lhIgJ5XY}G+g)=^Jw6o^SKfY287=lbr)>SCLU5V4j7uC6v zCmO)UjZo%L%tPqLtVqZmHyN5q@qhN-FuN&SccUGGbpK~gO0IXKyDUjFnL~yk#DD#2 zvPbTH6B8GKZsF803Q9BWmgWE6@8m>SwNi-JFT<(I8G;&|Gy>ql2S+JaeG4r0$ET;a9dHKSdCG#lokMbQjVG!-a{w(rlSs10vW4WJD zc5iWVX+DJ1GL0V5ZE#j#v0nhSrYK5jkBVM77#97qJ1C6OvUlHq&o4}c2tgLdD;5ZNQeyYy_JxK5!PtD+!p+>FpnivM%>hS_cDsvGSPr29W>QnKES?vj#bvW5|Y5dZboWRJZ2 zwn#h(bPJ~@!c@TO3svJaQWu}5mfbjDRrGDjC4o92wp-`-ah;7>{qL4wx0sZQ2=u2P z>h)vH+O=MQU@pe2Q!@gN>`vLsm^b5dkA<_W?90SomPX7c{^C_wYEj~GzLF*jzm|6V zG)dwhWV{@nge(i+Oy((%vpAjcvRkKqnzDeG7Juyp@hqC0c*!EK&}s-JaAuf zXm|Ja4-byq{nTGf!I-Oz4NZkv9$9X&QtHcX{T;jNh9t zuiFoyv`E57YzLebIQ$(zr7DV2SX+6o7!31%(H-PQ(Kd6fuK!6T!b_ zF2&_X5bscgJQQIM!#9CjgS!)vNQ+5~Jv~NI=Q9TCl7^%yX-Rg0hG&4IC*%Lo@J#Ua zrSF=y)B{PUrQuo8)(hkgUtVCC(bdkcNB;GVX`m!ja?Id_NW!(1zM*7MYf?SdEKseS z?SpRERZccjW)a@;Y~@t;wLZ)0wX6#7ENnMcCco{8Dks${Rwi$I-g<5|RNK+Dmv0B5 zrD(=X7jI+@#%fN6ZO-kS-z)Y1JZBNF9sVYWk}RH_1nHdeujmqHKv&Pg2mUJ#<^JP?r-w)WK_1Sh(3tzrSst@s z%Kc*IPm_#>!Evz%6NYpz4yM$f<`GR{H^~YbP2_0zW~W!yL)e(7bf4`)fAKfrzX6Sg zF|M5LvR`ctOS|ehrCC{asmokrA#JB3qej<=)@b^Gl-*{C$P>K4hj3Mr8;WLNj>rNH on-L=W3;YPKN^(O1^$sa}qI`FOci^fdHxy95O-e_6*a%Mk7bbfaga7~l literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/tinted_glass.cpython-312.pyc b/community/models/__pycache__/tinted_glass.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f552f4d37b231ca94ae552bf538060dc55c4a08a GIT binary patch literal 1154 zcmaJ=zi-n(6uz_LA4wcHs?yF~y|Az$XoToeBnks8mZiwpS7XVsqdTV}n;G~U5Zz$o zuRvl#VqpxPkUCV|tahRk@2=s_iCRwQ&)<9Rd+$EW_K(4!hhTmC^Xd3|2ca__{9D$F zT%7{>fMVpM82cFR8eBSDomh+YL`$%5Bq;8D#(;)EQ=lc#7T5(eeG?Qt5&sWO-vV7< z=x)#vd?3)3X!`bI%NxGDz~Io+&u{z`RV0#tHL;rWmN&r!U^M3WS$85YK4kNOcgi{hsi8qT%HTY5O&P a)ZS2YwW`NUyEWcvZzyeR?_4?pCw~E5{qQOP literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/torch.cpython-311.pyc b/community/models/__pycache__/torch.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..42123031f6e4f96d86da3bdd6943c38ed28d6135 GIT binary patch literal 1220 zcma)4zi-n}5Pr`|?EG+?s1#7Qu3lK!5W+%46$}(4KuE??Wb9Yhk`qVoIThXfS5UzQ z3u5Cx0Pz=OG@dGTsJcb!L?`Z@UAu`8^!fbhySwkscTfJ(?{^8DpT9rtZM6tFkjLw zTB+Au{03%`NicQnR(|wHIR~b-)i!@~%MSH;SXjHr)?&4LwHl+iTwT4oD_%~qdL=HW zFQWBg*y8`UP~Bd2=}U{Z<<@J^S&gAv#mwgET|6fim;YxCW|P;_ih=&)2YG&3yeIV) zRGBl2>oQZpuGz_Z33sPr=5jVoa=muE!(0o+*qgs)c`JxqAxdd9_oTGr#ZeUcjEj7D zz<9#mjc2h4lQ5o¥NVj=3*#L+rbLI1R=JZZv1&D>;W5$i-vtp7TmTx$|)J^vSL> zioN*+8Vlz+j|1*bgp=&eFK&uB6+=_(lYvN zfp#S&m0-)hwy7-0aJfm85j1!NmLXn~Km$WbyR!b)g5Ctn5U)v~d_zeM`S9DY>mLy( B5`F*x literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/torch.cpython-312.pyc b/community/models/__pycache__/torch.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..85cbab2041ce3dbef477565c4f8025aaffd16ab9 GIT binary patch literal 1106 zcmah{zi-n(6uxs3J3kyJDh1T7s}~kFgs@Pf3I+-T2+6e+8T;y5a^mRDDP%MMLnQm=MAi;2tGILY)X@n)G8ilH}s#j-{axk41yXzEF8%ZsBZ^cfdf|A_H~ zy%|no5hh_g7Fk=SUL12@WQI6&{cs!%kKAa=#Ak8|J&>zMJNKLy0**Tm2TvaFIfK}n zj-aq`p7A)~?npSv#2JNS=D7#SHgxE*?Z6!|XB7J^0yXB|;ho9ss(BxnX~Z7zEhtQ3 zi`M{)8l`k@Y^0reub=Akb}!ZD&2HM58#mIm&dG literal 0 HcmV?d00001 diff --git a/community/models/__pycache__/zombie.cpython-311.pyc b/community/models/__pycache__/zombie.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b00c3825c8708b455ad0f570d67312349c93b384 GIT binary patch literal 9102 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 B6$AhP literal 0 HcmV?d00001 diff --git a/community/models/button.py b/community/models/button.py new file mode 100644 index 00000000..87f38e7d --- /dev/null +++ b/community/models/button.py @@ -0,0 +1,34 @@ +transparent = True +transparency = 2 +is_cube = False +glass = False +translucent = False + +colliders = [] + +vertex_positions = [ + [ 0.5, 0.0, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.0, -0.5], # right + [-0.5, 0.0, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.0, 0.5], # left + [ 0.5, 0.0, 0.5, 0.5, 0.0, -0.5, -0.5, 0.0, -0.5, -0.5, 0.0, 0.5], # top + [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom + [-0.5, 0.0, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.0, 0.5], # front + [ 0.5, 0.0, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.0, -0.5], # back +] + +tex_coords = [ + [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], + [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], + [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], +] + +shading_values = [ + [0.6, 0.6, 0.6, 0.6], + [0.6, 0.6, 0.6, 0.6], + [1.0, 1.0, 1.0, 1.0], + [0.4, 0.4, 0.4, 0.4], + [0.8, 0.8, 0.8, 0.8], + [0.8, 0.8, 0.8, 0.8], +] diff --git a/community/models/cactus.py b/community/models/cactus.py new file mode 100644 index 00000000..4e919573 --- /dev/null +++ b/community/models/cactus.py @@ -0,0 +1,39 @@ +transparent = True +transparency = 2 +is_cube = False +glass = False +translucent = False + +colliders = [ + [ + (-0.4375, -0.5, -0.4375), + ( 0.4375, 0.5, 0.4375) + ] +] + +vertex_positions = [ + [ 0.4375, 0.5000, 0.5000, 0.4375, -0.5000, 0.5000, 0.4375, -0.5000, -0.5000, 0.4375, 0.5000, -0.5000], # right + [-0.4375, 0.5000, -0.5000, -0.4375, -0.5000, -0.5000, -0.4375, -0.5000, 0.5000, -0.4375, 0.5000, 0.5000], # left + [ 0.5000, 0.5000, 0.5000, 0.5000, 0.5000, -0.5000, -0.5000, 0.5000, -0.5000, -0.5000, 0.5000, 0.5000], # top + [-0.5000, -0.5000, 0.5000, -0.5000, -0.5000, -0.5000, 0.5000, -0.5000, -0.5000, 0.5000, -0.5000, 0.5000], # bottom + [-0.5000, 0.5000, 0.4375, -0.5000, -0.5000, 0.4375, 0.5000, -0.5000, 0.4375, 0.5000, 0.5000, 0.4375], # front + [ 0.5000, 0.5000, -0.4375, 0.5000, -0.5000, -0.4375, -0.5000, -0.5000, -0.4375, -0.5000, 0.5000, -0.4375], # back +] + +tex_coords = [ + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], +] + +shading_values = [ + [0.6, 0.6, 0.6, 0.6], + [0.6, 0.6, 0.6, 0.6], + [1.0, 1.0, 1.0, 1.0], + [0.4, 0.4, 0.4, 0.4], + [0.8, 0.8, 0.8, 0.8], + [0.8, 0.8, 0.8, 0.8], +] diff --git a/community/models/cow.py b/community/models/cow.py new file mode 100644 index 00000000..d88f904d --- /dev/null +++ b/community/models/cow.py @@ -0,0 +1,8 @@ + +transparent = True +is_cube = False +glass = False + +colliders = [] + +bones = [{'name':'body','pivot':[0.0, 1.1875, 0.125],'vertices':[[-0.3749999701976776, 0.7499999403953552, 0.625, -0.3749999701976776, 0.7499999403953552, -0.5, 0.3749999701976776, 0.7499999403953552, -0.5, 0.3749999701976776, 0.7499999403953552, 0.625], [0.3749999701976776, 1.375, 0.625, 0.3749999701976776, 1.3749998807907104, -0.5, -0.3749999701976776, 1.3749998807907104, -0.5, -0.3749999701976776, 1.375, 0.625], [-0.3749999701976776, 0.7499999403953552, -0.5, -0.3749999701976776, 1.3749998807907104, -0.5, 0.3749999701976776, 1.3749998807907104, -0.5, 0.3749999701976776, 0.7499999403953552, -0.5], [0.3749999701976776, 0.7499999403953552, 0.625, 0.3749999701976776, 1.375, 0.625, -0.3749999701976776, 1.375, 0.625, -0.3749999701976776, 0.7499999403953552, 0.625], [0.3749999701976776, 0.7499999403953552, 0.625, 0.3749999701976776, 0.7499999403953552, -0.5, 0.3749999701976776, 1.3749998807907104, -0.5, 0.3749999701976776, 1.375, 0.625], [-0.3749999701976776, 1.375, 0.625, -0.3749999701976776, 1.3749998807907104, -0.5, -0.3749999701976776, 0.7499999403953552, -0.5, -0.3749999701976776, 0.7499999403953552, 0.625], [-0.1249999925494194, 0.6874999403953552, 0.625, -0.1249999925494194, 0.6874999403953552, 0.25, 0.1249999925494194, 0.6874999403953552, 0.25, 0.1249999925494194, 0.6874999403953552, 0.625], [0.1249999925494194, 0.7499999403953552, 0.625, 0.1249999925494194, 0.7499999403953552, 0.25, -0.1249999925494194, 0.7499999403953552, 0.25, -0.1249999925494194, 0.7499999403953552, 0.625], [-0.1249999925494194, 0.6874999403953552, 0.25, -0.1249999925494194, 0.7499999403953552, 0.25, 0.1249999925494194, 0.7499999403953552, 0.25, 0.1249999925494194, 0.6874999403953552, 0.25], [0.1249999925494194, 0.6874999403953552, 0.625, 0.1249999925494194, 0.7499999403953552, 0.625, -0.1249999925494194, 0.7499999403953552, 0.625, -0.1249999925494194, 0.6874999403953552, 0.625], [0.1249999925494194, 0.6874999403953552, 0.625, 0.1249999925494194, 0.6874999403953552, 0.25, 0.1249999925494194, 0.7499999403953552, 0.25, 0.1249999925494194, 0.7499999403953552, 0.625], [-0.1249999925494194, 0.7499999403953552, 0.625, -0.1249999925494194, 0.7499999403953552, 0.25, -0.1249999925494194, 0.6874999403953552, 0.25, -0.1249999925494194, 0.6874999403953552, 0.625]],'tex_coords':[[0.06493506493506493, 0.0, 0.06493506493506493, 0.6428571428571428, 0.14285714285714285, 0.6428571428571428, 0.14285714285714285, 0.0], [0.2077922077922078, 0.0, 0.2077922077922078, 0.6428571428571428, 0.2857142857142857, 0.6428571428571428, 0.2857142857142857, 0.0], [0.06493506493506493, 0.6428571428571428, 0.06493506493506493, 1.0, 0.14285714285714285, 1.0, 0.14285714285714285, 0.6428571428571428], [0.14285714285714285, 0.6428571428571428, 0.14285714285714285, 1.0, 0.22077922077922077, 1.0, 0.22077922077922077, 0.6428571428571428], [0.14285714285714285, 0.0, 0.14285714285714285, 0.6428571428571428, 0.2077922077922078, 0.6428571428571428, 0.2077922077922078, 0.0], [0.0, 0.0, 0.0, 0.6428571428571428, 0.06493506493506493, 0.6428571428571428, 0.06493506493506493, 0.0], [0.2922077922077922, 0.75, 0.2922077922077922, 0.9642857142857143, 0.3181818181818182, 0.9642857142857143, 0.3181818181818182, 0.75], [0.3246753246753247, 0.75, 0.3246753246753247, 0.9642857142857143, 0.35064935064935066, 0.9642857142857143, 0.35064935064935066, 0.75], [0.2922077922077922, 0.9642857142857143, 0.2922077922077922, 1.0, 0.3181818181818182, 1.0, 0.3181818181818182, 0.9642857142857143], [0.3181818181818182, 0.9642857142857143, 0.3181818181818182, 1.0, 0.34415584415584416, 1.0, 0.34415584415584416, 0.9642857142857143], [0.3181818181818182, 0.75, 0.3181818181818182, 0.9642857142857143, 0.3246753246753247, 0.9642857142857143, 0.3246753246753247, 0.75], [0.2857142857142857, 0.75, 0.2857142857142857, 0.9642857142857143, 0.2922077922077922, 0.9642857142857143, 0.2922077922077922, 0.75]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'head','pivot':[0.0, 1.25, -0.5],'vertices':[[-0.25, 1.0, -0.875, -0.25, 1.5, -0.875, 0.25, 1.5, -0.875, 0.25, 1.0, -0.875], [0.25, 1.0, -0.5, 0.25, 1.5, -0.5, -0.25, 1.5, -0.5, -0.25, 1.0, -0.5], [-0.25, 1.5, -0.875, -0.25, 1.5, -0.5, 0.25, 1.5, -0.5, 0.25, 1.5, -0.875], [0.25, 1.0, -0.875, 0.25, 1.0, -0.5, -0.25, 1.0, -0.5, -0.25, 1.0, -0.875], [0.25, 1.0, -0.875, 0.25, 1.5, -0.875, 0.25, 1.5, -0.5, 0.25, 1.0, -0.5], [-0.25, 1.0, -0.5, -0.25, 1.5, -0.5, -0.25, 1.5, -0.875, -0.25, 1.0, -0.875], [-0.3125, 1.375, -0.75, -0.3125, 1.5625, -0.75, -0.25, 1.5625, -0.75, -0.25, 1.375, -0.75], [-0.25, 1.375, -0.6875, -0.25, 1.5625, -0.6875, -0.3125, 1.5625, -0.6875, -0.3125, 1.375, -0.6875], [-0.3125, 1.5625, -0.75, -0.3125, 1.5625, -0.6875, -0.25, 1.5625, -0.6875, -0.25, 1.5625, -0.75], [-0.25, 1.375, -0.75, -0.25, 1.375, -0.6875, -0.3125, 1.375, -0.6875, -0.3125, 1.375, -0.75], [-0.25, 1.375, -0.75, -0.25, 1.5625, -0.75, -0.25, 1.5625, -0.6875, -0.25, 1.375, -0.6875], [-0.3125, 1.375, -0.6875, -0.3125, 1.5625, -0.6875, -0.3125, 1.5625, -0.75, -0.3125, 1.375, -0.75], [0.25, 1.375, -0.75, 0.25, 1.5625, -0.75, 0.3125, 1.5625, -0.75, 0.3125, 1.375, -0.75], [0.3125, 1.375, -0.6875, 0.3125, 1.5625, -0.6875, 0.25, 1.5625, -0.6875, 0.25, 1.375, -0.6875], [0.25, 1.5625, -0.75, 0.25, 1.5625, -0.6875, 0.3125, 1.5625, -0.6875, 0.3125, 1.5625, -0.75], [0.3125, 1.375, -0.75, 0.3125, 1.375, -0.6875, 0.25, 1.375, -0.6875, 0.25, 1.375, -0.75], [0.3125, 1.375, -0.75, 0.3125, 1.5625, -0.75, 0.3125, 1.5625, -0.6875, 0.3125, 1.375, -0.6875], [0.25, 1.375, -0.6875, 0.25, 1.5625, -0.6875, 0.25, 1.5625, -0.75, 0.25, 1.375, -0.75]],'tex_coords':[[0.38961038961038963, 0.5, 0.38961038961038963, 0.7857142857142857, 0.44155844155844154, 0.7857142857142857, 0.44155844155844154, 0.5], [0.4805194805194805, 0.5, 0.4805194805194805, 0.7857142857142857, 0.5324675324675324, 0.7857142857142857, 0.5324675324675324, 0.5], [0.38961038961038963, 0.7857142857142857, 0.38961038961038963, 1.0, 0.44155844155844154, 1.0, 0.44155844155844154, 0.7857142857142857], [0.44155844155844154, 0.7857142857142857, 0.44155844155844154, 1.0, 0.4935064935064935, 1.0, 0.4935064935064935, 0.7857142857142857], [0.44155844155844154, 0.5, 0.44155844155844154, 0.7857142857142857, 0.4805194805194805, 0.7857142857142857, 0.4805194805194805, 0.5], [0.35064935064935066, 0.5, 0.35064935064935066, 0.7857142857142857, 0.38961038961038963, 0.7857142857142857, 0.38961038961038963, 0.5], [0.538961038961039, 0.8571428571428572, 0.538961038961039, 0.9642857142857143, 0.5454545454545454, 0.9642857142857143, 0.5454545454545454, 0.8571428571428572], [0.551948051948052, 0.8571428571428572, 0.551948051948052, 0.9642857142857143, 0.5584415584415584, 0.9642857142857143, 0.5584415584415584, 0.8571428571428572], [0.538961038961039, 0.9642857142857143, 0.538961038961039, 1.0, 0.5454545454545454, 1.0, 0.5454545454545454, 0.9642857142857143], [0.5454545454545454, 0.9642857142857143, 0.5454545454545454, 1.0, 0.551948051948052, 1.0, 0.551948051948052, 0.9642857142857143], [0.5454545454545454, 0.8571428571428572, 0.5454545454545454, 0.9642857142857143, 0.551948051948052, 0.9642857142857143, 0.551948051948052, 0.8571428571428572], [0.5324675324675324, 0.8571428571428572, 0.5324675324675324, 0.9642857142857143, 0.538961038961039, 0.9642857142857143, 0.538961038961039, 0.8571428571428572], [0.564935064935065, 0.8571428571428572, 0.564935064935065, 0.9642857142857143, 0.5714285714285714, 0.9642857142857143, 0.5714285714285714, 0.8571428571428572], [0.577922077922078, 0.8571428571428572, 0.577922077922078, 0.9642857142857143, 0.5844155844155844, 0.9642857142857143, 0.5844155844155844, 0.8571428571428572], [0.564935064935065, 0.9642857142857143, 0.564935064935065, 1.0, 0.5714285714285714, 1.0, 0.5714285714285714, 0.9642857142857143], [0.5714285714285714, 0.9642857142857143, 0.5714285714285714, 1.0, 0.577922077922078, 1.0, 0.577922077922078, 0.9642857142857143], [0.5714285714285714, 0.8571428571428572, 0.5714285714285714, 0.9642857142857143, 0.577922077922078, 0.9642857142857143, 0.577922077922078, 0.8571428571428572], [0.5584415584415584, 0.8571428571428572, 0.5584415584415584, 0.9642857142857143, 0.564935064935065, 0.9642857142857143, 0.564935064935065, 0.8571428571428572]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'leg0','pivot':[-0.25, 0.75, 0.4375],'vertices':[[-0.3125, 0.0, 0.3125, -0.3125, 0.75, 0.3125, -0.0625, 0.75, 0.3125, -0.0625, 0.0, 0.3125], [-0.0625, 0.0, 0.5625, -0.0625, 0.75, 0.5625, -0.3125, 0.75, 0.5625, -0.3125, 0.0, 0.5625], [-0.3125, 0.75, 0.3125, -0.3125, 0.75, 0.5625, -0.0625, 0.75, 0.5625, -0.0625, 0.75, 0.3125], [-0.0625, 0.0, 0.3125, -0.0625, 0.0, 0.5625, -0.3125, 0.0, 0.5625, -0.3125, 0.0, 0.3125], [-0.0625, 0.0, 0.3125, -0.0625, 0.75, 0.3125, -0.0625, 0.75, 0.5625, -0.0625, 0.0, 0.5625], [-0.3125, 0.0, 0.5625, -0.3125, 0.75, 0.5625, -0.3125, 0.75, 0.3125, -0.3125, 0.0, 0.3125]],'tex_coords':[[0.6103896103896104, 0.4285714285714286, 0.6103896103896104, 0.8571428571428572, 0.6363636363636364, 0.8571428571428572, 0.6363636363636364, 0.4285714285714286], [0.6623376623376623, 0.4285714285714286, 0.6623376623376623, 0.8571428571428572, 0.6883116883116883, 0.8571428571428572, 0.6883116883116883, 0.4285714285714286], [0.6103896103896104, 0.8571428571428572, 0.6103896103896104, 1.0, 0.6363636363636364, 1.0, 0.6363636363636364, 0.8571428571428572], [0.6363636363636364, 0.8571428571428572, 0.6363636363636364, 1.0, 0.6623376623376623, 1.0, 0.6623376623376623, 0.8571428571428572], [0.6363636363636364, 0.4285714285714286, 0.6363636363636364, 0.8571428571428572, 0.6623376623376623, 0.8571428571428572, 0.6623376623376623, 0.4285714285714286], [0.5844155844155844, 0.4285714285714286, 0.5844155844155844, 0.8571428571428572, 0.6103896103896104, 0.8571428571428572, 0.6103896103896104, 0.4285714285714286]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'leg1','pivot':[0.25, 0.75, 0.4375],'vertices':[[0.0625, 0.0, 0.3125, 0.0625, 0.75, 0.3125, 0.3125, 0.75, 0.3125, 0.3125, 0.0, 0.3125], [0.3125, 0.0, 0.5625, 0.3125, 0.75, 0.5625, 0.0625, 0.75, 0.5625, 0.0625, 0.0, 0.5625], [0.0625, 0.75, 0.3125, 0.0625, 0.75, 0.5625, 0.3125, 0.75, 0.5625, 0.3125, 0.75, 0.3125], [0.3125, 0.0, 0.3125, 0.3125, 0.0, 0.5625, 0.0625, 0.0, 0.5625, 0.0625, 0.0, 0.3125], [0.3125, 0.0, 0.3125, 0.3125, 0.75, 0.3125, 0.3125, 0.75, 0.5625, 0.3125, 0.0, 0.5625], [0.0625, 0.0, 0.5625, 0.0625, 0.75, 0.5625, 0.0625, 0.75, 0.3125, 0.0625, 0.0, 0.3125]],'tex_coords':[[0.7142857142857143, 0.4285714285714286, 0.7142857142857143, 0.8571428571428572, 0.7402597402597403, 0.8571428571428572, 0.7402597402597403, 0.4285714285714286], [0.7662337662337663, 0.4285714285714286, 0.7662337662337663, 0.8571428571428572, 0.7922077922077922, 0.8571428571428572, 0.7922077922077922, 0.4285714285714286], [0.7142857142857143, 0.8571428571428572, 0.7142857142857143, 1.0, 0.7402597402597403, 1.0, 0.7402597402597403, 0.8571428571428572], [0.7402597402597403, 0.8571428571428572, 0.7402597402597403, 1.0, 0.7662337662337663, 1.0, 0.7662337662337663, 0.8571428571428572], [0.7402597402597403, 0.4285714285714286, 0.7402597402597403, 0.8571428571428572, 0.7662337662337663, 0.8571428571428572, 0.7662337662337663, 0.4285714285714286], [0.6883116883116883, 0.4285714285714286, 0.6883116883116883, 0.8571428571428572, 0.7142857142857143, 0.8571428571428572, 0.7142857142857143, 0.4285714285714286]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'leg2','pivot':[-0.25, 0.75, -0.375],'vertices':[[-0.3125, 0.0, -0.4375, -0.3125, 0.75, -0.4375, -0.0625, 0.75, -0.4375, -0.0625, 0.0, -0.4375], [-0.0625, 0.0, -0.1875, -0.0625, 0.75, -0.1875, -0.3125, 0.75, -0.1875, -0.3125, 0.0, -0.1875], [-0.3125, 0.75, -0.4375, -0.3125, 0.75, -0.1875, -0.0625, 0.75, -0.1875, -0.0625, 0.75, -0.4375], [-0.0625, 0.0, -0.4375, -0.0625, 0.0, -0.1875, -0.3125, 0.0, -0.1875, -0.3125, 0.0, -0.4375], [-0.0625, 0.0, -0.4375, -0.0625, 0.75, -0.4375, -0.0625, 0.75, -0.1875, -0.0625, 0.0, -0.1875], [-0.3125, 0.0, -0.1875, -0.3125, 0.75, -0.1875, -0.3125, 0.75, -0.4375, -0.3125, 0.0, -0.4375]],'tex_coords':[[0.8181818181818182, 0.4285714285714286, 0.8181818181818182, 0.8571428571428572, 0.8441558441558441, 0.8571428571428572, 0.8441558441558441, 0.4285714285714286], [0.8701298701298701, 0.4285714285714286, 0.8701298701298701, 0.8571428571428572, 0.8961038961038961, 0.8571428571428572, 0.8961038961038961, 0.4285714285714286], [0.8181818181818182, 0.8571428571428572, 0.8181818181818182, 1.0, 0.8441558441558441, 1.0, 0.8441558441558441, 0.8571428571428572], [0.8441558441558441, 0.8571428571428572, 0.8441558441558441, 1.0, 0.8701298701298701, 1.0, 0.8701298701298701, 0.8571428571428572], [0.8441558441558441, 0.4285714285714286, 0.8441558441558441, 0.8571428571428572, 0.8701298701298701, 0.8571428571428572, 0.8701298701298701, 0.4285714285714286], [0.7922077922077922, 0.4285714285714286, 0.7922077922077922, 0.8571428571428572, 0.8181818181818182, 0.8571428571428572, 0.8181818181818182, 0.4285714285714286]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'leg3','pivot':[0.25, 0.75, -0.375],'vertices':[[0.0625, 0.0, -0.4375, 0.0625, 0.75, -0.4375, 0.3125, 0.75, -0.4375, 0.3125, 0.0, -0.4375], [0.3125, 0.0, -0.1875, 0.3125, 0.75, -0.1875, 0.0625, 0.75, -0.1875, 0.0625, 0.0, -0.1875], [0.0625, 0.75, -0.4375, 0.0625, 0.75, -0.1875, 0.3125, 0.75, -0.1875, 0.3125, 0.75, -0.4375], [0.3125, 0.0, -0.4375, 0.3125, 0.0, -0.1875, 0.0625, 0.0, -0.1875, 0.0625, 0.0, -0.4375], [0.3125, 0.0, -0.4375, 0.3125, 0.75, -0.4375, 0.3125, 0.75, -0.1875, 0.3125, 0.0, -0.1875], [0.0625, 0.0, -0.1875, 0.0625, 0.75, -0.1875, 0.0625, 0.75, -0.4375, 0.0625, 0.0, -0.4375]],'tex_coords':[[0.922077922077922, 0.4285714285714286, 0.922077922077922, 0.8571428571428572, 0.948051948051948, 0.8571428571428572, 0.948051948051948, 0.4285714285714286], [0.974025974025974, 0.4285714285714286, 0.974025974025974, 0.8571428571428572, 1.0, 0.8571428571428572, 1.0, 0.4285714285714286], [0.922077922077922, 0.8571428571428572, 0.922077922077922, 1.0, 0.948051948051948, 1.0, 0.948051948051948, 0.8571428571428572], [0.948051948051948, 0.8571428571428572, 0.948051948051948, 1.0, 0.974025974025974, 1.0, 0.974025974025974, 0.8571428571428572], [0.948051948051948, 0.4285714285714286, 0.948051948051948, 0.8571428571428572, 0.974025974025974, 0.8571428571428572, 0.974025974025974, 0.4285714285714286], [0.8961038961038961, 0.4285714285714286, 0.8961038961038961, 0.8571428571428572, 0.922077922077922, 0.8571428571428572, 0.922077922077922, 0.4285714285714286]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}] diff --git a/community/models/creeper.py b/community/models/creeper.py new file mode 100644 index 00000000..f6860aa7 --- /dev/null +++ b/community/models/creeper.py @@ -0,0 +1,8 @@ + +transparent = True +is_cube = False +glass = False + +colliders = [] + +bones = [{'name':'body','pivot':[0.0, 0.0, 0.0],'vertices':[[-0.25, 0.375, -0.125, -0.25, 1.125, -0.125, 0.25, 1.125, -0.125, 0.25, 0.375, -0.125], [0.25, 0.375, 0.125, 0.25, 1.125, 0.125, -0.25, 1.125, 0.125, -0.25, 0.375, 0.125], [-0.25, 1.125, -0.125, -0.25, 1.125, 0.125, 0.25, 1.125, 0.125, 0.25, 1.125, -0.125], [0.25, 0.375, -0.125, 0.25, 0.375, 0.125, -0.25, 0.375, 0.125, -0.25, 0.375, -0.125], [0.25, 0.375, -0.125, 0.25, 1.125, -0.125, 0.25, 1.125, 0.125, 0.25, 0.375, 0.125], [-0.25, 0.375, 0.125, -0.25, 1.125, 0.125, -0.25, 1.125, -0.125, -0.25, 0.375, -0.125]],'tex_coords':[[0.03333333333333333, 0.0, 0.03333333333333333, 0.75, 0.1, 0.75, 0.1, 0.0], [0.13333333333333333, 0.0, 0.13333333333333333, 0.75, 0.2, 0.75, 0.2, 0.0], [0.03333333333333333, 0.75, 0.03333333333333333, 1.0, 0.1, 1.0, 0.1, 0.75], [0.1, 0.75, 0.1, 1.0, 0.16666666666666666, 1.0, 0.16666666666666666, 0.75], [0.1, 0.0, 0.1, 0.75, 0.13333333333333333, 0.75, 0.13333333333333333, 0.0], [0.0, 0.0, 0.0, 0.75, 0.03333333333333333, 0.75, 0.03333333333333333, 0.0]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'head','pivot':[0.0, 1.125, 0.0],'vertices':[[-0.25, 1.125, -0.25, -0.25, 1.625, -0.25, 0.25, 1.625, -0.25, 0.25, 1.125, -0.25], [0.25, 1.125, 0.25, 0.25, 1.625, 0.25, -0.25, 1.625, 0.25, -0.25, 1.125, 0.25], [-0.25, 1.625, -0.25, -0.25, 1.625, 0.25, 0.25, 1.625, 0.25, 0.25, 1.625, -0.25], [0.25, 1.125, -0.25, 0.25, 1.125, 0.25, -0.25, 1.125, 0.25, -0.25, 1.125, -0.25], [0.25, 1.125, -0.25, 0.25, 1.625, -0.25, 0.25, 1.625, 0.25, 0.25, 1.125, 0.25], [-0.25, 1.125, 0.25, -0.25, 1.625, 0.25, -0.25, 1.625, -0.25, -0.25, 1.125, -0.25]],'tex_coords':[[0.26666666666666666, 0.0, 0.26666666666666666, 0.5, 0.3333333333333333, 0.5, 0.3333333333333333, 0.0], [0.4, 0.0, 0.4, 0.5, 0.4666666666666667, 0.5, 0.4666666666666667, 0.0], [0.26666666666666666, 0.5, 0.26666666666666666, 1.0, 0.3333333333333333, 1.0, 0.3333333333333333, 0.5], [0.3333333333333333, 0.5, 0.3333333333333333, 1.0, 0.4, 1.0, 0.4, 0.5], [0.3333333333333333, 0.0, 0.3333333333333333, 0.5, 0.4, 0.5, 0.4, 0.0], [0.2, 0.0, 0.2, 0.5, 0.26666666666666666, 0.5, 0.26666666666666666, 0.0]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'leg0','pivot':[-0.125, 0.375, 0.25],'vertices':[[-0.25, 0.0, 0.125, -0.25, 0.375, 0.125, 0.0, 0.375, 0.125, 0.0, 0.0, 0.125], [0.0, 0.0, 0.375, 0.0, 0.375, 0.375, -0.25, 0.375, 0.375, -0.25, 0.0, 0.375], [-0.25, 0.375, 0.125, -0.25, 0.375, 0.375, 0.0, 0.375, 0.375, 0.0, 0.375, 0.125], [0.0, 0.0, 0.125, 0.0, 0.0, 0.375, -0.25, 0.0, 0.375, -0.25, 0.0, 0.125], [0.0, 0.0, 0.125, 0.0, 0.375, 0.125, 0.0, 0.375, 0.375, 0.0, 0.0, 0.375], [-0.25, 0.0, 0.375, -0.25, 0.375, 0.375, -0.25, 0.375, 0.125, -0.25, 0.0, 0.125]],'tex_coords':[[0.5, 0.375, 0.5, 0.75, 0.5333333333333333, 0.75, 0.5333333333333333, 0.375], [0.5666666666666667, 0.375, 0.5666666666666667, 0.75, 0.6, 0.75, 0.6, 0.375], [0.5, 0.75, 0.5, 1.0, 0.5333333333333333, 1.0, 0.5333333333333333, 0.75], [0.5333333333333333, 0.75, 0.5333333333333333, 1.0, 0.5666666666666667, 1.0, 0.5666666666666667, 0.75], [0.5333333333333333, 0.375, 0.5333333333333333, 0.75, 0.5666666666666667, 0.75, 0.5666666666666667, 0.375], [0.4666666666666667, 0.375, 0.4666666666666667, 0.75, 0.5, 0.75, 0.5, 0.375]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'leg1','pivot':[0.125, 0.375, 0.25],'vertices':[[0.0, 0.0, 0.125, 0.0, 0.375, 0.125, 0.25, 0.375, 0.125, 0.25, 0.0, 0.125], [0.25, 0.0, 0.375, 0.25, 0.375, 0.375, 0.0, 0.375, 0.375, 0.0, 0.0, 0.375], [0.0, 0.375, 0.125, 0.0, 0.375, 0.375, 0.25, 0.375, 0.375, 0.25, 0.375, 0.125], [0.25, 0.0, 0.125, 0.25, 0.0, 0.375, 0.0, 0.0, 0.375, 0.0, 0.0, 0.125], [0.25, 0.0, 0.125, 0.25, 0.375, 0.125, 0.25, 0.375, 0.375, 0.25, 0.0, 0.375], [0.0, 0.0, 0.375, 0.0, 0.375, 0.375, 0.0, 0.375, 0.125, 0.0, 0.0, 0.125]],'tex_coords':[[0.6333333333333333, 0.375, 0.6333333333333333, 0.75, 0.6666666666666666, 0.75, 0.6666666666666666, 0.375], [0.7, 0.375, 0.7, 0.75, 0.7333333333333333, 0.75, 0.7333333333333333, 0.375], [0.6333333333333333, 0.75, 0.6333333333333333, 1.0, 0.6666666666666666, 1.0, 0.6666666666666666, 0.75], [0.6666666666666666, 0.75, 0.6666666666666666, 1.0, 0.7, 1.0, 0.7, 0.75], [0.6666666666666666, 0.375, 0.6666666666666666, 0.75, 0.7, 0.75, 0.7, 0.375], [0.6, 0.375, 0.6, 0.75, 0.6333333333333333, 0.75, 0.6333333333333333, 0.375]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'leg2','pivot':[-0.125, 0.375, -0.25],'vertices':[[-0.25, 0.0, -0.375, -0.25, 0.375, -0.375, 0.0, 0.375, -0.375, 0.0, 0.0, -0.375], [0.0, 0.0, -0.125, 0.0, 0.375, -0.125, -0.25, 0.375, -0.125, -0.25, 0.0, -0.125], [-0.25, 0.375, -0.375, -0.25, 0.375, -0.125, 0.0, 0.375, -0.125, 0.0, 0.375, -0.375], [0.0, 0.0, -0.375, 0.0, 0.0, -0.125, -0.25, 0.0, -0.125, -0.25, 0.0, -0.375], [0.0, 0.0, -0.375, 0.0, 0.375, -0.375, 0.0, 0.375, -0.125, 0.0, 0.0, -0.125], [-0.25, 0.0, -0.125, -0.25, 0.375, -0.125, -0.25, 0.375, -0.375, -0.25, 0.0, -0.375]],'tex_coords':[[0.7666666666666667, 0.375, 0.7666666666666667, 0.75, 0.8, 0.75, 0.8, 0.375], [0.8333333333333334, 0.375, 0.8333333333333334, 0.75, 0.8666666666666667, 0.75, 0.8666666666666667, 0.375], [0.7666666666666667, 0.75, 0.7666666666666667, 1.0, 0.8, 1.0, 0.8, 0.75], [0.8, 0.75, 0.8, 1.0, 0.8333333333333334, 1.0, 0.8333333333333334, 0.75], [0.8, 0.375, 0.8, 0.75, 0.8333333333333334, 0.75, 0.8333333333333334, 0.375], [0.7333333333333333, 0.375, 0.7333333333333333, 0.75, 0.7666666666666667, 0.75, 0.7666666666666667, 0.375]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'leg3','pivot':[0.125, 0.375, -0.25],'vertices':[[0.0, 0.0, -0.375, 0.0, 0.375, -0.375, 0.25, 0.375, -0.375, 0.25, 0.0, -0.375], [0.25, 0.0, -0.125, 0.25, 0.375, -0.125, 0.0, 0.375, -0.125, 0.0, 0.0, -0.125], [0.0, 0.375, -0.375, 0.0, 0.375, -0.125, 0.25, 0.375, -0.125, 0.25, 0.375, -0.375], [0.25, 0.0, -0.375, 0.25, 0.0, -0.125, 0.0, 0.0, -0.125, 0.0, 0.0, -0.375], [0.25, 0.0, -0.375, 0.25, 0.375, -0.375, 0.25, 0.375, -0.125, 0.25, 0.0, -0.125], [0.0, 0.0, -0.125, 0.0, 0.375, -0.125, 0.0, 0.375, -0.375, 0.0, 0.0, -0.375]],'tex_coords':[[0.9, 0.375, 0.9, 0.75, 0.9333333333333333, 0.75, 0.9333333333333333, 0.375], [0.9666666666666667, 0.375, 0.9666666666666667, 0.75, 1.0, 0.75, 1.0, 0.375], [0.9, 0.75, 0.9, 1.0, 0.9333333333333333, 1.0, 0.9333333333333333, 0.75], [0.9333333333333333, 0.75, 0.9333333333333333, 1.0, 0.9666666666666667, 1.0, 0.9666666666666667, 0.75], [0.9333333333333333, 0.375, 0.9333333333333333, 0.75, 0.9666666666666667, 0.75, 0.9666666666666667, 0.375], [0.8666666666666667, 0.375, 0.8666666666666667, 0.75, 0.9, 0.75, 0.9, 0.375]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}] diff --git a/community/models/crop.py b/community/models/crop.py new file mode 100644 index 00000000..c8d29610 --- /dev/null +++ b/community/models/crop.py @@ -0,0 +1,40 @@ +transparent = True +transparency = 2 +is_cube = False +glass = False +translucent = False + +colliders = [] + +vertex_positions = [ + [ 0.25, 0.4375, 0.50, 0.25, -0.5625, 0.50, 0.25, -0.5625, -0.50, 0.25, 0.4375, -0.50], # right + [ 0.25, 0.4375, -0.50, 0.25, -0.5625, -0.50, 0.25, -0.5625, 0.50, 0.25, 0.4375, 0.50], # right + [-0.25, 0.4375, -0.50, -0.25, -0.5625, -0.50, -0.25, -0.5625, 0.50, -0.25, 0.4375, 0.50], # left + [-0.25, 0.4375, 0.50, -0.25, -0.5625, 0.50, -0.25, -0.5625, -0.50, -0.25, 0.4375, -0.50], # left + [-0.50, 0.4375, 0.25, -0.50, -0.5625, 0.25, 0.50, -0.5625, 0.25, 0.50, 0.4375, 0.25], # front + [ 0.50, 0.4375, 0.25, 0.50, -0.5625, 0.25, -0.50, -0.5625, 0.25, -0.50, 0.4375, 0.25], # front + [ 0.50, 0.4375, -0.25, 0.50, -0.5625, -0.25, -0.50, -0.5625, -0.25, -0.50, 0.4375, -0.25], # back + [-0.50, 0.4375, -0.25, -0.50, -0.5625, -0.25, 0.50, -0.5625, -0.25, 0.50, 0.4375, -0.25], # back +] + +tex_coords = [ + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], +] + +shading_values = [ + [0.6, 0.6, 0.6, 0.6], + [0.6, 0.6, 0.6, 0.6], + [0.6, 0.6, 0.6, 0.6], + [0.6, 0.6, 0.6, 0.6], + [0.8, 0.8, 0.8, 0.8], + [0.8, 0.8, 0.8, 0.8], + [0.8, 0.8, 0.8, 0.8], + [0.8, 0.8, 0.8, 0.8], +] diff --git a/community/models/cube.py b/community/models/cube.py new file mode 100644 index 00000000..50c204f7 --- /dev/null +++ b/community/models/cube.py @@ -0,0 +1,39 @@ +transparent = False +transparency = 0 +translucent = False +is_cube = True +glass = False + +colliders = [ + [ + (-0.5, -0.5, -0.5), + ( 0.5, 0.5, 0.5) + ] +] + +vertex_positions = [ + [ 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5], # right + [-0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.5, 0.5], # left + [ 0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5], # top + [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom + [-0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5], # front + [ 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5], # back +] + +tex_coords = [ + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], +] + +shading_values = [ + [0.6, 0.6, 0.6, 0.6], + [0.6, 0.6, 0.6, 0.6], + [1.0, 1.0, 1.0, 1.0], + [0.4, 0.4, 0.4, 0.4], + [0.8, 0.8, 0.8, 0.8], + [0.8, 0.8, 0.8, 0.8], +] diff --git a/community/models/curry.py b/community/models/curry.py new file mode 100644 index 00000000..dabce985 --- /dev/null +++ b/community/models/curry.py @@ -0,0 +1,8 @@ + +transparent = True +is_cube = False +glass = False + +colliders = [] + +bones = [{'name':'body','pivot':[0.0, 1.5, 0.0],'vertices':[[-0.25, 0.75, -0.125, -0.25, 1.5, -0.125, 0.25, 1.5, -0.125, 0.25, 0.75, -0.125], [0.25, 0.75, 0.125, 0.25, 1.5, 0.125, -0.25, 1.5, 0.125, -0.25, 0.75, 0.125], [-0.25, 1.5, -0.125, -0.25, 1.5, 0.125, 0.25, 1.5, 0.125, 0.25, 1.5, -0.125], [0.25, 0.75, -0.125, 0.25, 0.75, 0.125, -0.25, 0.75, 0.125, -0.25, 0.75, -0.125], [0.25, 0.75, -0.125, 0.25, 1.5, -0.125, 0.25, 1.5, 0.125, 0.25, 0.75, 0.125], [-0.25, 0.75, 0.125, -0.25, 1.5, 0.125, -0.25, 1.5, -0.125, -0.25, 0.75, -0.125]],'tex_coords':[[0.018867924528301886, 0.0, 0.018867924528301886, 0.75, 0.05660377358490566, 0.75, 0.05660377358490566, 0.0], [0.07547169811320754, 0.0, 0.07547169811320754, 0.75, 0.11320754716981132, 0.75, 0.11320754716981132, 0.0], [0.018867924528301886, 0.75, 0.018867924528301886, 1.0, 0.05660377358490566, 1.0, 0.05660377358490566, 0.75], [0.05660377358490566, 0.75, 0.05660377358490566, 1.0, 0.09433962264150944, 1.0, 0.09433962264150944, 0.75], [0.05660377358490566, 0.0, 0.05660377358490566, 0.75, 0.07547169811320754, 0.75, 0.07547169811320754, 0.0], [0.0, 0.0, 0.0, 0.75, 0.018867924528301886, 0.75, 0.018867924528301886, 0.0]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'head','pivot':[0.0, 1.5, 0.0],'vertices':[[-0.2536456286907196, 1.497308611869812, -0.23161627352237701, -0.2536456286907196, 1.997308611869812, -0.23161627352237701, 0.2463543713092804, 1.997308611869812, -0.23161627352237701, 0.2463543713092804, 1.497308611869812, -0.23161627352237701], [0.2463543713092804, 1.497308611869812, 0.2683837413787842, 0.2463543713092804, 1.997308611869812, 0.2683837413787842, -0.2536456286907196, 1.997308611869812, 0.2683837413787842, -0.2536456286907196, 1.497308611869812, 0.2683837413787842], [-0.2536456286907196, 1.997308611869812, -0.23161627352237701, -0.2536456286907196, 1.997308611869812, 0.2683837413787842, 0.2463543713092804, 1.997308611869812, 0.2683837413787842, 0.2463543713092804, 1.997308611869812, -0.23161627352237701], [0.2463543713092804, 1.497308611869812, -0.23161627352237701, 0.2463543713092804, 1.497308611869812, 0.2683837413787842, -0.2536456286907196, 1.497308611869812, 0.2683837413787842, -0.2536456286907196, 1.497308611869812, -0.23161627352237701], [0.2463543713092804, 1.497308611869812, -0.23161627352237701, 0.2463543713092804, 1.997308611869812, -0.23161627352237701, 0.2463543713092804, 1.997308611869812, 0.2683837413787842, 0.2463543713092804, 1.497308611869812, 0.2683837413787842], [-0.2536456286907196, 1.497308611869812, 0.2683837413787842, -0.2536456286907196, 1.997308611869812, 0.2683837413787842, -0.2536456286907196, 1.997308611869812, -0.23161627352237701, -0.2536456286907196, 1.497308611869812, -0.23161627352237701], [0.2316092699766159, 0.8962944149971008, -0.21831698715686798, 0.2316092699766159, 1.396294355392456, -0.21831698715686798, 0.7316092848777771, 1.396294355392456, -0.21831698715686798, 0.7316092848777771, 0.8962944149971008, -0.21831698715686798], [0.7316092848777771, 0.8962944149971008, 0.2816829979419708, 0.7316092848777771, 1.396294355392456, 0.2816829979419708, 0.2316092699766159, 1.396294355392456, 0.2816829979419708, 0.2316092699766159, 0.8962944149971008, 0.2816829979419708], [0.2316092699766159, 1.396294355392456, -0.21831698715686798, 0.2316092699766159, 1.396294355392456, 0.2816829979419708, 0.7316092848777771, 1.396294355392456, 0.2816829979419708, 0.7316092848777771, 1.396294355392456, -0.21831698715686798], [0.7316092848777771, 0.8962944149971008, -0.21831698715686798, 0.7316092848777771, 0.8962944149971008, 0.2816829979419708, 0.2316092699766159, 0.8962944149971008, 0.2816829979419708, 0.2316092699766159, 0.8962944149971008, -0.21831698715686798], [0.7316092848777771, 0.8962944149971008, -0.21831698715686798, 0.7316092848777771, 1.396294355392456, -0.21831698715686798, 0.7316092848777771, 1.396294355392456, 0.2816829979419708, 0.7316092848777771, 0.8962944149971008, 0.2816829979419708], [0.2316092699766159, 0.8962944149971008, 0.2816829979419708, 0.2316092699766159, 1.396294355392456, 0.2816829979419708, 0.2316092699766159, 1.396294355392456, -0.21831698715686798, 0.2316092699766159, 0.8962944149971008, -0.21831698715686798]],'tex_coords':[[0.1509433962264151, 0.0, 0.1509433962264151, 0.5, 0.18867924528301888, 0.5, 0.18867924528301888, 0.0], [0.22641509433962265, 0.0, 0.22641509433962265, 0.5, 0.2641509433962264, 0.5, 0.2641509433962264, 0.0], [0.1509433962264151, 0.5, 0.1509433962264151, 1.0, 0.18867924528301888, 1.0, 0.18867924528301888, 0.5], [0.18867924528301888, 0.5, 0.18867924528301888, 1.0, 0.22641509433962265, 1.0, 0.22641509433962265, 0.5], [0.18867924528301888, 0.0, 0.18867924528301888, 0.5, 0.22641509433962265, 0.5, 0.22641509433962265, 0.0], [0.11320754716981132, 0.0, 0.11320754716981132, 0.5, 0.1509433962264151, 0.5, 0.1509433962264151, 0.0], [0.3018867924528302, 0.0, 0.3018867924528302, 0.5, 0.33962264150943394, 0.5, 0.33962264150943394, 0.0], [0.37735849056603776, 0.0, 0.37735849056603776, 0.5, 0.41509433962264153, 0.5, 0.41509433962264153, 0.0], [0.3018867924528302, 0.5, 0.3018867924528302, 1.0, 0.33962264150943394, 1.0, 0.33962264150943394, 0.5], [0.33962264150943394, 0.5, 0.33962264150943394, 1.0, 0.37735849056603776, 1.0, 0.37735849056603776, 0.5], [0.33962264150943394, 0.0, 0.33962264150943394, 0.5, 0.37735849056603776, 0.5, 0.37735849056603776, 0.0], [0.2641509433962264, 0.0, 0.2641509433962264, 0.5, 0.3018867924528302, 0.5, 0.3018867924528302, 0.0]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'hat','pivot':[0.0, 1.5, 0.0],'vertices':[[-0.25, 1.5, -0.25, -0.25, 2.0, -0.25, 0.25, 2.0, -0.25, 0.25, 1.5, -0.25], [0.25, 1.5, 0.25, 0.25, 2.0, 0.25, -0.25, 2.0, 0.25, -0.25, 1.5, 0.25], [-0.25, 2.0, -0.25, -0.25, 2.0, 0.25, 0.25, 2.0, 0.25, 0.25, 2.0, -0.25], [0.25, 1.5, -0.25, 0.25, 1.5, 0.25, -0.25, 1.5, 0.25, -0.25, 1.5, -0.25], [0.25, 1.5, -0.25, 0.25, 2.0, -0.25, 0.25, 2.0, 0.25, 0.25, 1.5, 0.25], [-0.25, 1.5, 0.25, -0.25, 2.0, 0.25, -0.25, 2.0, -0.25, -0.25, 1.5, -0.25]],'tex_coords':[[0.4528301886792453, 0.0, 0.4528301886792453, 0.5, 0.49056603773584906, 0.5, 0.49056603773584906, 0.0], [0.5283018867924528, 0.0, 0.5283018867924528, 0.5, 0.5660377358490566, 0.5, 0.5660377358490566, 0.0], [0.4528301886792453, 0.5, 0.4528301886792453, 1.0, 0.49056603773584906, 1.0, 0.49056603773584906, 0.5], [0.49056603773584906, 0.5, 0.49056603773584906, 1.0, 0.5283018867924528, 1.0, 0.5283018867924528, 0.5], [0.49056603773584906, 0.0, 0.49056603773584906, 0.5, 0.5283018867924528, 0.5, 0.5283018867924528, 0.0], [0.41509433962264153, 0.0, 0.41509433962264153, 0.5, 0.4528301886792453, 0.5, 0.4528301886792453, 0.0]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'rightArm','pivot':[-0.3125, 1.375, 0.0],'vertices':[[-0.5, 0.75, -0.125, -0.5, 1.5, -0.125, -0.25, 1.5, -0.125, -0.25, 0.75, -0.125], [-0.25, 0.75, 0.125, -0.25, 1.5, 0.125, -0.5, 1.5, 0.125, -0.5, 0.75, 0.125], [-0.5, 1.5, -0.125, -0.5, 1.5, 0.125, -0.25, 1.5, 0.125, -0.25, 1.5, -0.125], [-0.25, 0.75, -0.125, -0.25, 0.75, 0.125, -0.5, 0.75, 0.125, -0.5, 0.75, -0.125], [-0.25, 0.75, -0.125, -0.25, 1.5, -0.125, -0.25, 1.5, 0.125, -0.25, 0.75, 0.125], [-0.5, 0.75, 0.125, -0.5, 1.5, 0.125, -0.5, 1.5, -0.125, -0.5, 0.75, -0.125]],'tex_coords':[[0.5849056603773585, 0.0, 0.5849056603773585, 0.75, 0.6037735849056604, 0.75, 0.6037735849056604, 0.0], [0.6226415094339622, 0.0, 0.6226415094339622, 0.75, 0.6415094339622641, 0.75, 0.6415094339622641, 0.0], [0.5849056603773585, 0.75, 0.5849056603773585, 1.0, 0.6037735849056604, 1.0, 0.6037735849056604, 0.75], [0.6037735849056604, 0.75, 0.6037735849056604, 1.0, 0.6226415094339622, 1.0, 0.6226415094339622, 0.75], [0.6037735849056604, 0.0, 0.6037735849056604, 0.75, 0.6226415094339622, 0.75, 0.6226415094339622, 0.0], [0.5660377358490566, 0.0, 0.5660377358490566, 0.75, 0.5849056603773585, 0.75, 0.5849056603773585, 0.0]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'leftArm','pivot':[0.3125, 1.375, 0.0],'vertices':[[0.7019792795181274, 0.748781681060791, -0.02643335424363613, 0.7019792795181274, 1.498781681060791, -0.02643335424363613, 0.9519792795181274, 1.498781681060791, -0.02643335424363613, 0.9519792795181274, 0.748781681060791, -0.02643335424363613], [0.9519792795181274, 0.748781681060791, 0.22356665134429932, 0.9519792795181274, 1.498781681060791, 0.22356665134429932, 0.7019792795181274, 1.498781681060791, 0.22356665134429932, 0.7019792795181274, 0.748781681060791, 0.22356665134429932], [0.7019792795181274, 1.498781681060791, -0.02643335424363613, 0.7019792795181274, 1.498781681060791, 0.22356665134429932, 0.9519792795181274, 1.498781681060791, 0.22356665134429932, 0.9519792795181274, 1.498781681060791, -0.02643335424363613], [0.9519792795181274, 0.748781681060791, -0.02643335424363613, 0.9519792795181274, 0.748781681060791, 0.22356665134429932, 0.7019792795181274, 0.748781681060791, 0.22356665134429932, 0.7019792795181274, 0.748781681060791, -0.02643335424363613], [0.9519792795181274, 0.748781681060791, -0.02643335424363613, 0.9519792795181274, 1.498781681060791, -0.02643335424363613, 0.9519792795181274, 1.498781681060791, 0.22356665134429932, 0.9519792795181274, 0.748781681060791, 0.22356665134429932], [0.7019792795181274, 0.748781681060791, 0.22356665134429932, 0.7019792795181274, 1.498781681060791, 0.22356665134429932, 0.7019792795181274, 1.498781681060791, -0.02643335424363613, 0.7019792795181274, 0.748781681060791, -0.02643335424363613], [0.09342791140079498, 1.3167552947998047, -0.06984145194292068, 0.09342791140079498, 1.5042552947998047, -0.06984145194292068, 0.7184278964996338, 1.5042552947998047, -0.06984145194292068, 0.7184278964996338, 1.3167552947998047, -0.06984145194292068], [0.7184278964996338, 1.3167552947998047, 0.18015854060649872, 0.7184278964996338, 1.5042552947998047, 0.18015854060649872, 0.09342791140079498, 1.5042552947998047, 0.18015854060649872, 0.09342791140079498, 1.3167552947998047, 0.18015854060649872], [0.09342791140079498, 1.5042552947998047, -0.06984145194292068, 0.09342791140079498, 1.5042552947998047, 0.18015854060649872, 0.7184278964996338, 1.5042552947998047, 0.18015854060649872, 0.7184278964996338, 1.5042552947998047, -0.06984145194292068], [0.7184278964996338, 1.3167552947998047, -0.06984145194292068, 0.7184278964996338, 1.3167552947998047, 0.18015854060649872, 0.09342791140079498, 1.3167552947998047, 0.18015854060649872, 0.09342791140079498, 1.3167552947998047, -0.06984145194292068], [0.7184278964996338, 1.3167552947998047, -0.06984145194292068, 0.7184278964996338, 1.5042552947998047, -0.06984145194292068, 0.7184278964996338, 1.5042552947998047, 0.18015854060649872, 0.7184278964996338, 1.3167552947998047, 0.18015854060649872], [0.09342791140079498, 1.3167552947998047, 0.18015854060649872, 0.09342791140079498, 1.5042552947998047, 0.18015854060649872, 0.09342791140079498, 1.5042552947998047, -0.06984145194292068, 0.09342791140079498, 1.3167552947998047, -0.06984145194292068]],'tex_coords':[[0.660377358490566, 0.0, 0.660377358490566, 0.75, 0.6792452830188679, 0.75, 0.6792452830188679, 0.0], [0.6981132075471698, 0.0, 0.6981132075471698, 0.75, 0.7169811320754716, 0.75, 0.7169811320754716, 0.0], [0.660377358490566, 0.75, 0.660377358490566, 1.0, 0.6792452830188679, 1.0, 0.6792452830188679, 0.75], [0.6792452830188679, 0.75, 0.6792452830188679, 1.0, 0.6981132075471698, 1.0, 0.6981132075471698, 0.75], [0.6792452830188679, 0.0, 0.6792452830188679, 0.75, 0.6981132075471698, 0.75, 0.6981132075471698, 0.0], [0.6415094339622641, 0.0, 0.6415094339622641, 0.75, 0.660377358490566, 0.75, 0.660377358490566, 0.0], [0.7358490566037735, 0.5625, 0.7358490566037735, 0.75, 0.7830188679245284, 0.75, 0.7830188679245284, 0.5625], [0.8018867924528302, 0.5625, 0.8018867924528302, 0.75, 0.8490566037735849, 0.75, 0.8490566037735849, 0.5625], [0.7358490566037735, 0.75, 0.7358490566037735, 1.0, 0.7830188679245284, 1.0, 0.7830188679245284, 0.75], [0.7830188679245284, 0.75, 0.7830188679245284, 1.0, 0.8301886792452831, 1.0, 0.8301886792452831, 0.75], [0.7830188679245284, 0.5625, 0.7830188679245284, 0.75, 0.8018867924528302, 0.75, 0.8018867924528302, 0.5625], [0.7169811320754716, 0.5625, 0.7169811320754716, 0.75, 0.7358490566037735, 0.75, 0.7358490566037735, 0.5625]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'rightLeg','pivot':[-0.11875, 0.75, 0.0],'vertices':[[-0.24375000596046448, 0.0, -0.125, -0.24375000596046448, 0.75, -0.125, 0.0062500000931322575, 0.75, -0.125, 0.0062500000931322575, 0.0, -0.125], [0.0062500000931322575, 0.0, 0.125, 0.0062500000931322575, 0.75, 0.125, -0.24375000596046448, 0.75, 0.125, -0.24375000596046448, 0.0, 0.125], [-0.24375000596046448, 0.75, -0.125, -0.24375000596046448, 0.75, 0.125, 0.0062500000931322575, 0.75, 0.125, 0.0062500000931322575, 0.75, -0.125], [0.0062500000931322575, 0.0, -0.125, 0.0062500000931322575, 0.0, 0.125, -0.24375000596046448, 0.0, 0.125, -0.24375000596046448, 0.0, -0.125], [0.0062500000931322575, 0.0, -0.125, 0.0062500000931322575, 0.75, -0.125, 0.0062500000931322575, 0.75, 0.125, 0.0062500000931322575, 0.0, 0.125], [-0.24375000596046448, 0.0, 0.125, -0.24375000596046448, 0.75, 0.125, -0.24375000596046448, 0.75, -0.125, -0.24375000596046448, 0.0, -0.125]],'tex_coords':[[0.8679245283018868, 0.0, 0.8679245283018868, 0.75, 0.8867924528301887, 0.75, 0.8867924528301887, 0.0], [0.9056603773584906, 0.0, 0.9056603773584906, 0.75, 0.9245283018867925, 0.75, 0.9245283018867925, 0.0], [0.8679245283018868, 0.75, 0.8679245283018868, 1.0, 0.8867924528301887, 1.0, 0.8867924528301887, 0.75], [0.8867924528301887, 0.75, 0.8867924528301887, 1.0, 0.9056603773584906, 1.0, 0.9056603773584906, 0.75], [0.8867924528301887, 0.0, 0.8867924528301887, 0.75, 0.9056603773584906, 0.75, 0.9056603773584906, 0.0], [0.8490566037735849, 0.0, 0.8490566037735849, 0.75, 0.8679245283018868, 0.75, 0.8679245283018868, 0.0]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'leftLeg','pivot':[0.11875, 0.75, 0.0],'vertices':[[-0.0062500000931322575, 0.0, -0.125, -0.0062500000931322575, 0.75, -0.125, 0.24375000596046448, 0.75, -0.125, 0.24375000596046448, 0.0, -0.125], [0.24375000596046448, 0.0, 0.125, 0.24375000596046448, 0.75, 0.125, -0.0062500000931322575, 0.75, 0.125, -0.0062500000931322575, 0.0, 0.125], [-0.0062500000931322575, 0.75, -0.125, -0.0062500000931322575, 0.75, 0.125, 0.24375000596046448, 0.75, 0.125, 0.24375000596046448, 0.75, -0.125], [0.24375000596046448, 0.0, -0.125, 0.24375000596046448, 0.0, 0.125, -0.0062500000931322575, 0.0, 0.125, -0.0062500000931322575, 0.0, -0.125], [0.24375000596046448, 0.0, -0.125, 0.24375000596046448, 0.75, -0.125, 0.24375000596046448, 0.75, 0.125, 0.24375000596046448, 0.0, 0.125], [-0.0062500000931322575, 0.0, 0.125, -0.0062500000931322575, 0.75, 0.125, -0.0062500000931322575, 0.75, -0.125, -0.0062500000931322575, 0.0, -0.125]],'tex_coords':[[0.9433962264150944, 0.0, 0.9433962264150944, 0.75, 0.9622641509433962, 0.75, 0.9622641509433962, 0.0], [0.9811320754716981, 0.0, 0.9811320754716981, 0.75, 1.0, 0.75, 1.0, 0.0], [0.9433962264150944, 0.75, 0.9433962264150944, 1.0, 0.9622641509433962, 1.0, 0.9622641509433962, 0.75], [0.9622641509433962, 0.75, 0.9622641509433962, 1.0, 0.9811320754716981, 1.0, 0.9811320754716981, 0.75], [0.9622641509433962, 0.0, 0.9622641509433962, 0.75, 0.9811320754716981, 0.75, 0.9811320754716981, 0.0], [0.9245283018867925, 0.0, 0.9245283018867925, 0.75, 0.9433962264150944, 0.75, 0.9433962264150944, 0.0]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}] diff --git a/community/models/door.py b/community/models/door.py new file mode 100644 index 00000000..74bcb7bb --- /dev/null +++ b/community/models/door.py @@ -0,0 +1,34 @@ +transparent = False +transparency = 0 +is_cube = True +glass = False +translucent = False + +colliders = [] + +vertex_positions = [ + [ 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5], # right + [-0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.5, 0.5], # left + [ 0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5], # top + [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom + [-0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5], # front + [ 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5], # back +] + +tex_coords = [ + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], +] + +shading_values = [ + [0.6, 0.6, 0.6, 0.6], + [0.6, 0.6, 0.6, 0.6], + [1.0, 1.0, 1.0, 1.0], + [0.4, 0.4, 0.4, 0.4], + [0.8, 0.8, 0.8, 0.8], + [0.8, 0.8, 0.8, 0.8], +] diff --git a/community/models/fire.py b/community/models/fire.py new file mode 100644 index 00000000..84edeec7 --- /dev/null +++ b/community/models/fire.py @@ -0,0 +1,28 @@ +transparent = True +transparency = 2 +is_cube = False +glass = False +translucent = False + +colliders = [] + +vertex_positions = [ + [-0.3536, 0.5000, 0.3536, -0.3536, -0.5000, 0.3536, 0.3536, -0.5000, -0.3536, 0.3536, 0.5000, -0.3536], + [-0.3536, 0.5000, -0.3536, -0.3536, -0.5000, -0.3536, 0.3536, -0.5000, 0.3536, 0.3536, 0.5000, 0.3536], + [ 0.3536, 0.5000, -0.3536, 0.3536, -0.5000, -0.3536, -0.3536, -0.5000, 0.3536, -0.3536, 0.5000, 0.3536], + [ 0.3536, 0.5000, 0.3536, 0.3536, -0.5000, 0.3536, -0.3536, -0.5000, -0.3536, -0.3536, 0.5000, -0.3536], +] + +tex_coords = [ + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], +] + +shading_values = [ + [1.0, 1.0, 1.0, 1.0], + [1.0, 1.0, 1.0, 1.0], + [1.0, 1.0, 1.0, 1.0], + [1.0, 1.0, 1.0, 1.0], +] diff --git a/community/models/flat.py b/community/models/flat.py new file mode 100644 index 00000000..75f8cfdd --- /dev/null +++ b/community/models/flat.py @@ -0,0 +1,22 @@ +transparent = True +transparency = 2 +is_cube = False +glass = False +translucent = False + +colliders = [] + +vertex_positions = [ + [ 0.5, -0.4375, 0.5, 0.5, -0.4375, -0.5, -0.5, -0.4375, -0.5, -0.5, -0.4375, 0.5], # top + [-0.5, -0.4375, 0.5, -0.5, -0.4375, -0.5, 0.5, -0.4375, -0.5, 0.5, -0.4375, 0.5], # bottom +] + +tex_coords = [ + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], +] + +shading_values = [ + [1.0, 1.0, 1.0, 1.0], + [0.4, 0.4, 0.4, 0.4], +] diff --git a/community/models/glass.py b/community/models/glass.py new file mode 100644 index 00000000..a204622e --- /dev/null +++ b/community/models/glass.py @@ -0,0 +1,39 @@ +transparent = True +transparency = 2 +is_cube = True +glass = True +translucent = False + +colliders = [ + [ + (-0.5, -0.5, -0.5), + ( 0.5, 0.5, 0.5) + ] +] + +vertex_positions = [ + [ 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5], # right + [-0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.5, 0.5], # left + [ 0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5], # top + [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom + [-0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5], # front + [ 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5], # back +] + +tex_coords = [ + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], +] + +shading_values = [ + [0.6, 0.6, 0.6, 0.6], + [0.6, 0.6, 0.6, 0.6], + [1.0, 1.0, 1.0, 1.0], + [0.4, 0.4, 0.4, 0.4], + [0.8, 0.8, 0.8, 0.8], + [0.8, 0.8, 0.8, 0.8], +] diff --git a/community/models/ladder.py b/community/models/ladder.py new file mode 100644 index 00000000..84edeec7 --- /dev/null +++ b/community/models/ladder.py @@ -0,0 +1,28 @@ +transparent = True +transparency = 2 +is_cube = False +glass = False +translucent = False + +colliders = [] + +vertex_positions = [ + [-0.3536, 0.5000, 0.3536, -0.3536, -0.5000, 0.3536, 0.3536, -0.5000, -0.3536, 0.3536, 0.5000, -0.3536], + [-0.3536, 0.5000, -0.3536, -0.3536, -0.5000, -0.3536, 0.3536, -0.5000, 0.3536, 0.3536, 0.5000, 0.3536], + [ 0.3536, 0.5000, -0.3536, 0.3536, -0.5000, -0.3536, -0.3536, -0.5000, 0.3536, -0.3536, 0.5000, 0.3536], + [ 0.3536, 0.5000, 0.3536, 0.3536, -0.5000, 0.3536, -0.3536, -0.5000, -0.3536, -0.3536, 0.5000, -0.3536], +] + +tex_coords = [ + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], +] + +shading_values = [ + [1.0, 1.0, 1.0, 1.0], + [1.0, 1.0, 1.0, 1.0], + [1.0, 1.0, 1.0, 1.0], + [1.0, 1.0, 1.0, 1.0], +] diff --git a/community/models/leaves.py b/community/models/leaves.py new file mode 100644 index 00000000..3e0c2b91 --- /dev/null +++ b/community/models/leaves.py @@ -0,0 +1,39 @@ +transparent = True +transparency = 1 +is_cube = True +glass = False +translucent = False + +colliders = [ + [ + (-0.5, -0.5, -0.5), + ( 0.5, 0.5, 0.5) + ] +] + +vertex_positions = [ + [ 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5], # right + [-0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.5, 0.5], # left + [ 0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5], # top + [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom + [-0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5], # front + [ 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5], # back +] + +tex_coords = [ + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], +] + +shading_values = [ + [0.6, 0.6, 0.6, 0.6], + [0.6, 0.6, 0.6, 0.6], + [1.0, 1.0, 1.0, 1.0], + [0.4, 0.4, 0.4, 0.4], + [0.8, 0.8, 0.8, 0.8], + [0.8, 0.8, 0.8, 0.8], +] diff --git a/community/models/lever.py b/community/models/lever.py new file mode 100644 index 00000000..87f38e7d --- /dev/null +++ b/community/models/lever.py @@ -0,0 +1,34 @@ +transparent = True +transparency = 2 +is_cube = False +glass = False +translucent = False + +colliders = [] + +vertex_positions = [ + [ 0.5, 0.0, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.0, -0.5], # right + [-0.5, 0.0, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.0, 0.5], # left + [ 0.5, 0.0, 0.5, 0.5, 0.0, -0.5, -0.5, 0.0, -0.5, -0.5, 0.0, 0.5], # top + [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom + [-0.5, 0.0, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.0, 0.5], # front + [ 0.5, 0.0, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.0, -0.5], # back +] + +tex_coords = [ + [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], + [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], + [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], +] + +shading_values = [ + [0.6, 0.6, 0.6, 0.6], + [0.6, 0.6, 0.6, 0.6], + [1.0, 1.0, 1.0, 1.0], + [0.4, 0.4, 0.4, 0.4], + [0.8, 0.8, 0.8, 0.8], + [0.8, 0.8, 0.8, 0.8], +] diff --git a/community/models/liquid.py b/community/models/liquid.py new file mode 100644 index 00000000..635adbb3 --- /dev/null +++ b/community/models/liquid.py @@ -0,0 +1,36 @@ +# in the end, it'd be nice to have it so that liquids fill up the whole block when they have a block above them +# this would avoid the problems this solution has +transparent = False +transparency = 0 +is_cube = True +glass = False +translucent = False + +colliders = [] + +vertex_positions = [ + [ 0.500, 0.375, 0.500, 0.500, -0.625, 0.500, 0.500, -0.625, -0.500, 0.500, 0.375, -0.500], # right + [-0.500, 0.375, -0.500, -0.500, -0.625, -0.500, -0.500, -0.625, 0.500, -0.500, 0.375, 0.500], # left + [ 0.500, 0.375, 0.500, 0.500, 0.375, -0.500, -0.500, 0.375, -0.500, -0.500, 0.375, 0.500], # top + [-0.500, -0.625, 0.500, -0.500, -0.625, -0.500, 0.500, -0.625, -0.500, 0.500, -0.625, 0.500], # bottom + [-0.500, 0.375, 0.500, -0.500, -0.625, 0.500, 0.500, -0.625, 0.500, 0.500, 0.375, 0.500], # front + [ 0.500, 0.375, -0.500, 0.500, -0.625, -0.500, -0.500, -0.625, -0.500, -0.500, 0.375, -0.500], # back +] + +tex_coords = [ + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], +] + +shading_values = [ + [0.6, 0.6, 0.6, 0.6], + [0.6, 0.6, 0.6, 0.6], + [1.0, 1.0, 1.0, 1.0], + [0.4, 0.4, 0.4, 0.4], + [0.8, 0.8, 0.8, 0.8], + [0.8, 0.8, 0.8, 0.8], +] diff --git a/community/models/pig.py b/community/models/pig.py new file mode 100644 index 00000000..eddfc53d --- /dev/null +++ b/community/models/pig.py @@ -0,0 +1,8 @@ + +transparent = True +is_cube = False +glass = False + +colliders = [] + +bones = [{'name':'body','pivot':[0.0, 0.8125, 0.125],'vertices':[[-0.3124999701976776, 0.3750000298023224, 0.5, -0.3124999701976776, 0.375, -0.5, 0.3124999701976776, 0.375, -0.5, 0.3124999701976776, 0.3750000298023224, 0.5], [0.3124999701976776, 0.8750000596046448, 0.5, 0.3124999701976776, 0.875, -0.5, -0.3124999701976776, 0.875, -0.5, -0.3124999701976776, 0.8750000596046448, 0.5], [-0.3124999701976776, 0.375, -0.5, -0.3124999701976776, 0.875, -0.5, 0.3124999701976776, 0.875, -0.5, 0.3124999701976776, 0.375, -0.5], [0.3124999701976776, 0.3750000298023224, 0.5, 0.3124999701976776, 0.8750000596046448, 0.5, -0.3124999701976776, 0.8750000596046448, 0.5, -0.3124999701976776, 0.3750000298023224, 0.5], [0.3124999701976776, 0.3750000298023224, 0.5, 0.3124999701976776, 0.375, -0.5, 0.3124999701976776, 0.875, -0.5, 0.3124999701976776, 0.8750000596046448, 0.5], [-0.3124999701976776, 0.8750000596046448, 0.5, -0.3124999701976776, 0.875, -0.5, -0.3124999701976776, 0.375, -0.5, -0.3124999701976776, 0.3750000298023224, 0.5]],'tex_coords':[[0.056338028169014086, 0.0, 0.056338028169014086, 0.6666666666666667, 0.1267605633802817, 0.6666666666666667, 0.1267605633802817, 0.0], [0.18309859154929578, 0.0, 0.18309859154929578, 0.6666666666666667, 0.2535211267605634, 0.6666666666666667, 0.2535211267605634, 0.0], [0.056338028169014086, 0.6666666666666667, 0.056338028169014086, 1.0, 0.1267605633802817, 1.0, 0.1267605633802817, 0.6666666666666667], [0.1267605633802817, 0.6666666666666667, 0.1267605633802817, 1.0, 0.19718309859154928, 1.0, 0.19718309859154928, 0.6666666666666667], [0.1267605633802817, 0.0, 0.1267605633802817, 0.6666666666666667, 0.18309859154929578, 0.6666666666666667, 0.18309859154929578, 0.0], [0.0, 0.0, 0.0, 0.6666666666666667, 0.056338028169014086, 0.6666666666666667, 0.056338028169014086, 0.0]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'head','pivot':[0.0, 0.75, -0.375],'vertices':[[-0.25, 0.5, -0.875, -0.25, 1.0, -0.875, 0.25, 1.0, -0.875, 0.25, 0.5, -0.875], [0.25, 0.5, -0.375, 0.25, 1.0, -0.375, -0.25, 1.0, -0.375, -0.25, 0.5, -0.375], [-0.25, 1.0, -0.875, -0.25, 1.0, -0.375, 0.25, 1.0, -0.375, 0.25, 1.0, -0.875], [0.25, 0.5, -0.875, 0.25, 0.5, -0.375, -0.25, 0.5, -0.375, -0.25, 0.5, -0.875], [0.25, 0.5, -0.875, 0.25, 1.0, -0.875, 0.25, 1.0, -0.375, 0.25, 0.5, -0.375], [-0.25, 0.5, -0.375, -0.25, 1.0, -0.375, -0.25, 1.0, -0.875, -0.25, 0.5, -0.875], [-0.125, 0.5625, -0.9375, -0.125, 0.75, -0.9375, 0.125, 0.75, -0.9375, 0.125, 0.5625, -0.9375], [0.125, 0.5625, -0.875, 0.125, 0.75, -0.875, -0.125, 0.75, -0.875, -0.125, 0.5625, -0.875], [-0.125, 0.75, -0.9375, -0.125, 0.75, -0.875, 0.125, 0.75, -0.875, 0.125, 0.75, -0.9375], [0.125, 0.5625, -0.9375, 0.125, 0.5625, -0.875, -0.125, 0.5625, -0.875, -0.125, 0.5625, -0.9375], [0.125, 0.5625, -0.9375, 0.125, 0.75, -0.9375, 0.125, 0.75, -0.875, 0.125, 0.5625, -0.875], [-0.125, 0.5625, -0.875, -0.125, 0.75, -0.875, -0.125, 0.75, -0.9375, -0.125, 0.5625, -0.9375]],'tex_coords':[[0.30985915492957744, 0.33333333333333337, 0.30985915492957744, 0.6666666666666667, 0.36619718309859156, 0.6666666666666667, 0.36619718309859156, 0.33333333333333337], [0.4225352112676056, 0.33333333333333337, 0.4225352112676056, 0.6666666666666667, 0.4788732394366197, 0.6666666666666667, 0.4788732394366197, 0.33333333333333337], [0.30985915492957744, 0.6666666666666667, 0.30985915492957744, 1.0, 0.36619718309859156, 1.0, 0.36619718309859156, 0.6666666666666667], [0.36619718309859156, 0.6666666666666667, 0.36619718309859156, 1.0, 0.4225352112676056, 1.0, 0.4225352112676056, 0.6666666666666667], [0.36619718309859156, 0.33333333333333337, 0.36619718309859156, 0.6666666666666667, 0.4225352112676056, 0.6666666666666667, 0.4225352112676056, 0.33333333333333337], [0.2535211267605634, 0.33333333333333337, 0.2535211267605634, 0.6666666666666667, 0.30985915492957744, 0.6666666666666667, 0.30985915492957744, 0.33333333333333337], [0.4859154929577465, 0.8333333333333334, 0.4859154929577465, 0.9583333333333334, 0.5140845070422535, 0.9583333333333334, 0.5140845070422535, 0.8333333333333334], [0.5211267605633803, 0.8333333333333334, 0.5211267605633803, 0.9583333333333334, 0.5492957746478874, 0.9583333333333334, 0.5492957746478874, 0.8333333333333334], [0.4859154929577465, 0.9583333333333334, 0.4859154929577465, 1.0, 0.5140845070422535, 1.0, 0.5140845070422535, 0.9583333333333334], [0.5140845070422535, 0.9583333333333334, 0.5140845070422535, 1.0, 0.5422535211267606, 1.0, 0.5422535211267606, 0.9583333333333334], [0.5140845070422535, 0.8333333333333334, 0.5140845070422535, 0.9583333333333334, 0.5211267605633803, 0.9583333333333334, 0.5211267605633803, 0.8333333333333334], [0.4788732394366197, 0.8333333333333334, 0.4788732394366197, 0.9583333333333334, 0.4859154929577465, 0.9583333333333334, 0.4859154929577465, 0.8333333333333334]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'leg0','pivot':[-0.1875, 0.375, 0.4375],'vertices':[[-0.3125, 0.0, 0.3125, -0.3125, 0.375, 0.3125, -0.0625, 0.375, 0.3125, -0.0625, 0.0, 0.3125], [-0.0625, 0.0, 0.5625, -0.0625, 0.375, 0.5625, -0.3125, 0.375, 0.5625, -0.3125, 0.0, 0.5625], [-0.3125, 0.375, 0.3125, -0.3125, 0.375, 0.5625, -0.0625, 0.375, 0.5625, -0.0625, 0.375, 0.3125], [-0.0625, 0.0, 0.3125, -0.0625, 0.0, 0.5625, -0.3125, 0.0, 0.5625, -0.3125, 0.0, 0.3125], [-0.0625, 0.0, 0.3125, -0.0625, 0.375, 0.3125, -0.0625, 0.375, 0.5625, -0.0625, 0.0, 0.5625], [-0.3125, 0.0, 0.5625, -0.3125, 0.375, 0.5625, -0.3125, 0.375, 0.3125, -0.3125, 0.0, 0.3125]],'tex_coords':[[0.5774647887323944, 0.5833333333333333, 0.5774647887323944, 0.8333333333333334, 0.6056338028169014, 0.8333333333333334, 0.6056338028169014, 0.5833333333333333], [0.6338028169014085, 0.5833333333333333, 0.6338028169014085, 0.8333333333333334, 0.6619718309859155, 0.8333333333333334, 0.6619718309859155, 0.5833333333333333], [0.5774647887323944, 0.8333333333333334, 0.5774647887323944, 1.0, 0.6056338028169014, 1.0, 0.6056338028169014, 0.8333333333333334], [0.6056338028169014, 0.8333333333333334, 0.6056338028169014, 1.0, 0.6338028169014085, 1.0, 0.6338028169014085, 0.8333333333333334], [0.6056338028169014, 0.5833333333333333, 0.6056338028169014, 0.8333333333333334, 0.6338028169014085, 0.8333333333333334, 0.6338028169014085, 0.5833333333333333], [0.5492957746478874, 0.5833333333333333, 0.5492957746478874, 0.8333333333333334, 0.5774647887323944, 0.8333333333333334, 0.5774647887323944, 0.5833333333333333]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'leg1','pivot':[0.1875, 0.375, 0.4375],'vertices':[[0.0625, 0.0, 0.3125, 0.0625, 0.375, 0.3125, 0.3125, 0.375, 0.3125, 0.3125, 0.0, 0.3125], [0.3125, 0.0, 0.5625, 0.3125, 0.375, 0.5625, 0.0625, 0.375, 0.5625, 0.0625, 0.0, 0.5625], [0.0625, 0.375, 0.3125, 0.0625, 0.375, 0.5625, 0.3125, 0.375, 0.5625, 0.3125, 0.375, 0.3125], [0.3125, 0.0, 0.3125, 0.3125, 0.0, 0.5625, 0.0625, 0.0, 0.5625, 0.0625, 0.0, 0.3125], [0.3125, 0.0, 0.3125, 0.3125, 0.375, 0.3125, 0.3125, 0.375, 0.5625, 0.3125, 0.0, 0.5625], [0.0625, 0.0, 0.5625, 0.0625, 0.375, 0.5625, 0.0625, 0.375, 0.3125, 0.0625, 0.0, 0.3125]],'tex_coords':[[0.6901408450704225, 0.5833333333333333, 0.6901408450704225, 0.8333333333333334, 0.7183098591549296, 0.8333333333333334, 0.7183098591549296, 0.5833333333333333], [0.7464788732394366, 0.5833333333333333, 0.7464788732394366, 0.8333333333333334, 0.7746478873239436, 0.8333333333333334, 0.7746478873239436, 0.5833333333333333], [0.6901408450704225, 0.8333333333333334, 0.6901408450704225, 1.0, 0.7183098591549296, 1.0, 0.7183098591549296, 0.8333333333333334], [0.7183098591549296, 0.8333333333333334, 0.7183098591549296, 1.0, 0.7464788732394366, 1.0, 0.7464788732394366, 0.8333333333333334], [0.7183098591549296, 0.5833333333333333, 0.7183098591549296, 0.8333333333333334, 0.7464788732394366, 0.8333333333333334, 0.7464788732394366, 0.5833333333333333], [0.6619718309859155, 0.5833333333333333, 0.6619718309859155, 0.8333333333333334, 0.6901408450704225, 0.8333333333333334, 0.6901408450704225, 0.5833333333333333]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'leg2','pivot':[-0.1875, 0.375, -0.3125],'vertices':[[-0.3125, 0.0, -0.4375, -0.3125, 0.375, -0.4375, -0.0625, 0.375, -0.4375, -0.0625, 0.0, -0.4375], [-0.0625, 0.0, -0.1875, -0.0625, 0.375, -0.1875, -0.3125, 0.375, -0.1875, -0.3125, 0.0, -0.1875], [-0.3125, 0.375, -0.4375, -0.3125, 0.375, -0.1875, -0.0625, 0.375, -0.1875, -0.0625, 0.375, -0.4375], [-0.0625, 0.0, -0.4375, -0.0625, 0.0, -0.1875, -0.3125, 0.0, -0.1875, -0.3125, 0.0, -0.4375], [-0.0625, 0.0, -0.4375, -0.0625, 0.375, -0.4375, -0.0625, 0.375, -0.1875, -0.0625, 0.0, -0.1875], [-0.3125, 0.0, -0.1875, -0.3125, 0.375, -0.1875, -0.3125, 0.375, -0.4375, -0.3125, 0.0, -0.4375]],'tex_coords':[[0.8028169014084507, 0.5833333333333333, 0.8028169014084507, 0.8333333333333334, 0.8309859154929577, 0.8333333333333334, 0.8309859154929577, 0.5833333333333333], [0.8591549295774648, 0.5833333333333333, 0.8591549295774648, 0.8333333333333334, 0.8873239436619719, 0.8333333333333334, 0.8873239436619719, 0.5833333333333333], [0.8028169014084507, 0.8333333333333334, 0.8028169014084507, 1.0, 0.8309859154929577, 1.0, 0.8309859154929577, 0.8333333333333334], [0.8309859154929577, 0.8333333333333334, 0.8309859154929577, 1.0, 0.8591549295774648, 1.0, 0.8591549295774648, 0.8333333333333334], [0.8309859154929577, 0.5833333333333333, 0.8309859154929577, 0.8333333333333334, 0.8591549295774648, 0.8333333333333334, 0.8591549295774648, 0.5833333333333333], [0.7746478873239436, 0.5833333333333333, 0.7746478873239436, 0.8333333333333334, 0.8028169014084507, 0.8333333333333334, 0.8028169014084507, 0.5833333333333333]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'leg3','pivot':[0.1875, 0.375, -0.3125],'vertices':[[0.0625, 0.0, -0.4375, 0.0625, 0.375, -0.4375, 0.3125, 0.375, -0.4375, 0.3125, 0.0, -0.4375], [0.3125, 0.0, -0.1875, 0.3125, 0.375, -0.1875, 0.0625, 0.375, -0.1875, 0.0625, 0.0, -0.1875], [0.0625, 0.375, -0.4375, 0.0625, 0.375, -0.1875, 0.3125, 0.375, -0.1875, 0.3125, 0.375, -0.4375], [0.3125, 0.0, -0.4375, 0.3125, 0.0, -0.1875, 0.0625, 0.0, -0.1875, 0.0625, 0.0, -0.4375], [0.3125, 0.0, -0.4375, 0.3125, 0.375, -0.4375, 0.3125, 0.375, -0.1875, 0.3125, 0.0, -0.1875], [0.0625, 0.0, -0.1875, 0.0625, 0.375, -0.1875, 0.0625, 0.375, -0.4375, 0.0625, 0.0, -0.4375]],'tex_coords':[[0.9154929577464789, 0.5833333333333333, 0.9154929577464789, 0.8333333333333334, 0.9436619718309859, 0.8333333333333334, 0.9436619718309859, 0.5833333333333333], [0.971830985915493, 0.5833333333333333, 0.971830985915493, 0.8333333333333334, 1.0, 0.8333333333333334, 1.0, 0.5833333333333333], [0.9154929577464789, 0.8333333333333334, 0.9154929577464789, 1.0, 0.9436619718309859, 1.0, 0.9436619718309859, 0.8333333333333334], [0.9436619718309859, 0.8333333333333334, 0.9436619718309859, 1.0, 0.971830985915493, 1.0, 0.971830985915493, 0.8333333333333334], [0.9436619718309859, 0.5833333333333333, 0.9436619718309859, 0.8333333333333334, 0.971830985915493, 0.8333333333333334, 0.971830985915493, 0.5833333333333333], [0.8873239436619719, 0.5833333333333333, 0.8873239436619719, 0.8333333333333334, 0.9154929577464789, 0.8333333333333334, 0.9154929577464789, 0.5833333333333333]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}] diff --git a/community/models/plant.py b/community/models/plant.py new file mode 100644 index 00000000..9aa6a127 --- /dev/null +++ b/community/models/plant.py @@ -0,0 +1,28 @@ +transparent = True +transparency = 2 +translucent = False +is_cube = False +glass = False + +colliders = [] + +vertex_positions = [ + [-0.3536, 0.5000, 0.3536, -0.3536, -0.5000, 0.3536, 0.3536, -0.5000, -0.3536, 0.3536, 0.5000, -0.3536], + [-0.3536, 0.5000, -0.3536, -0.3536, -0.5000, -0.3536, 0.3536, -0.5000, 0.3536, 0.3536, 0.5000, 0.3536], + [ 0.3536, 0.5000, -0.3536, 0.3536, -0.5000, -0.3536, -0.3536, -0.5000, 0.3536, -0.3536, 0.5000, 0.3536], + [ 0.3536, 0.5000, 0.3536, 0.3536, -0.5000, 0.3536, -0.3536, -0.5000, -0.3536, -0.3536, 0.5000, -0.3536], +] + +tex_coords = [ + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], +] + +shading_values = [ + [1.0, 1.0, 1.0, 1.0], + [1.0, 1.0, 1.0, 1.0], + [1.0, 1.0, 1.0, 1.0], + [1.0, 1.0, 1.0, 1.0], +] diff --git a/community/models/pressure_plate.py b/community/models/pressure_plate.py new file mode 100644 index 00000000..75f8cfdd --- /dev/null +++ b/community/models/pressure_plate.py @@ -0,0 +1,22 @@ +transparent = True +transparency = 2 +is_cube = False +glass = False +translucent = False + +colliders = [] + +vertex_positions = [ + [ 0.5, -0.4375, 0.5, 0.5, -0.4375, -0.5, -0.5, -0.4375, -0.5, -0.5, -0.4375, 0.5], # top + [-0.5, -0.4375, 0.5, -0.5, -0.4375, -0.5, 0.5, -0.4375, -0.5, 0.5, -0.4375, 0.5], # bottom +] + +tex_coords = [ + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], +] + +shading_values = [ + [1.0, 1.0, 1.0, 1.0], + [0.4, 0.4, 0.4, 0.4], +] diff --git a/community/models/sign.py b/community/models/sign.py new file mode 100644 index 00000000..84edeec7 --- /dev/null +++ b/community/models/sign.py @@ -0,0 +1,28 @@ +transparent = True +transparency = 2 +is_cube = False +glass = False +translucent = False + +colliders = [] + +vertex_positions = [ + [-0.3536, 0.5000, 0.3536, -0.3536, -0.5000, 0.3536, 0.3536, -0.5000, -0.3536, 0.3536, 0.5000, -0.3536], + [-0.3536, 0.5000, -0.3536, -0.3536, -0.5000, -0.3536, 0.3536, -0.5000, 0.3536, 0.3536, 0.5000, 0.3536], + [ 0.3536, 0.5000, -0.3536, 0.3536, -0.5000, -0.3536, -0.3536, -0.5000, 0.3536, -0.3536, 0.5000, 0.3536], + [ 0.3536, 0.5000, 0.3536, 0.3536, -0.5000, 0.3536, -0.3536, -0.5000, -0.3536, -0.3536, 0.5000, -0.3536], +] + +tex_coords = [ + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], +] + +shading_values = [ + [1.0, 1.0, 1.0, 1.0], + [1.0, 1.0, 1.0, 1.0], + [1.0, 1.0, 1.0, 1.0], + [1.0, 1.0, 1.0, 1.0], +] diff --git a/community/models/sign_post.py b/community/models/sign_post.py new file mode 100644 index 00000000..84edeec7 --- /dev/null +++ b/community/models/sign_post.py @@ -0,0 +1,28 @@ +transparent = True +transparency = 2 +is_cube = False +glass = False +translucent = False + +colliders = [] + +vertex_positions = [ + [-0.3536, 0.5000, 0.3536, -0.3536, -0.5000, 0.3536, 0.3536, -0.5000, -0.3536, 0.3536, 0.5000, -0.3536], + [-0.3536, 0.5000, -0.3536, -0.3536, -0.5000, -0.3536, 0.3536, -0.5000, 0.3536, 0.3536, 0.5000, 0.3536], + [ 0.3536, 0.5000, -0.3536, 0.3536, -0.5000, -0.3536, -0.3536, -0.5000, 0.3536, -0.3536, 0.5000, 0.3536], + [ 0.3536, 0.5000, 0.3536, 0.3536, -0.5000, 0.3536, -0.3536, -0.5000, -0.3536, -0.3536, 0.5000, -0.3536], +] + +tex_coords = [ + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], +] + +shading_values = [ + [1.0, 1.0, 1.0, 1.0], + [1.0, 1.0, 1.0, 1.0], + [1.0, 1.0, 1.0, 1.0], + [1.0, 1.0, 1.0, 1.0], +] diff --git a/community/models/skeleton.py b/community/models/skeleton.py new file mode 100644 index 00000000..003cd6c2 --- /dev/null +++ b/community/models/skeleton.py @@ -0,0 +1,8 @@ + +transparent = True +is_cube = False +glass = False + +colliders = [] + +bones = [{'name':'body','pivot':[0.0, 1.5, 0.0],'vertices':[[-0.25, 0.75, -0.125, -0.25, 1.5, -0.125, 0.25, 1.5, -0.125, 0.25, 0.75, -0.125], [0.25, 0.75, 0.125, 0.25, 1.5, 0.125, -0.25, 1.5, 0.125, -0.25, 0.75, 0.125], [-0.25, 1.5, -0.125, -0.25, 1.5, 0.125, 0.25, 1.5, 0.125, 0.25, 1.5, -0.125], [0.25, 0.75, -0.125, 0.25, 0.75, 0.125, -0.25, 0.75, 0.125, -0.25, 0.75, -0.125], [0.25, 0.75, -0.125, 0.25, 1.5, -0.125, 0.25, 1.5, 0.125, 0.25, 0.75, 0.125], [-0.25, 0.75, 0.125, -0.25, 1.5, 0.125, -0.25, 1.5, -0.125, -0.25, 0.75, -0.125]],'tex_coords':[[0.03333333333333333, 0.0, 0.03333333333333333, 0.75, 0.1, 0.75, 0.1, 0.0], [0.13333333333333333, 0.0, 0.13333333333333333, 0.75, 0.2, 0.75, 0.2, 0.0], [0.03333333333333333, 0.75, 0.03333333333333333, 1.0, 0.1, 1.0, 0.1, 0.75], [0.1, 0.75, 0.1, 1.0, 0.16666666666666666, 1.0, 0.16666666666666666, 0.75], [0.1, 0.0, 0.1, 0.75, 0.13333333333333333, 0.75, 0.13333333333333333, 0.0], [0.0, 0.0, 0.0, 0.75, 0.03333333333333333, 0.75, 0.03333333333333333, 0.0]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'head','pivot':[0.0, 1.5, 0.0],'vertices':[[-0.25, 1.5, -0.25, -0.25, 2.0, -0.25, 0.25, 2.0, -0.25, 0.25, 1.5, -0.25], [0.25, 1.5, 0.25, 0.25, 2.0, 0.25, -0.25, 2.0, 0.25, -0.25, 1.5, 0.25], [-0.25, 2.0, -0.25, -0.25, 2.0, 0.25, 0.25, 2.0, 0.25, 0.25, 2.0, -0.25], [0.25, 1.5, -0.25, 0.25, 1.5, 0.25, -0.25, 1.5, 0.25, -0.25, 1.5, -0.25], [0.25, 1.5, -0.25, 0.25, 2.0, -0.25, 0.25, 2.0, 0.25, 0.25, 1.5, 0.25], [-0.25, 1.5, 0.25, -0.25, 2.0, 0.25, -0.25, 2.0, -0.25, -0.25, 1.5, -0.25]],'tex_coords':[[0.26666666666666666, 0.0, 0.26666666666666666, 0.5, 0.3333333333333333, 0.5, 0.3333333333333333, 0.0], [0.4, 0.0, 0.4, 0.5, 0.4666666666666667, 0.5, 0.4666666666666667, 0.0], [0.26666666666666666, 0.5, 0.26666666666666666, 1.0, 0.3333333333333333, 1.0, 0.3333333333333333, 0.5], [0.3333333333333333, 0.5, 0.3333333333333333, 1.0, 0.4, 1.0, 0.4, 0.5], [0.3333333333333333, 0.0, 0.3333333333333333, 0.5, 0.4, 0.5, 0.4, 0.0], [0.2, 0.0, 0.2, 0.5, 0.26666666666666666, 0.5, 0.26666666666666666, 0.0]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'hat','pivot':[0.0, 1.5, 0.0],'vertices':[[-0.25, 1.5, -0.25, -0.25, 2.0, -0.25, 0.25, 2.0, -0.25, 0.25, 1.5, -0.25], [0.25, 1.5, 0.25, 0.25, 2.0, 0.25, -0.25, 2.0, 0.25, -0.25, 1.5, 0.25], [-0.25, 2.0, -0.25, -0.25, 2.0, 0.25, 0.25, 2.0, 0.25, 0.25, 2.0, -0.25], [0.25, 1.5, -0.25, 0.25, 1.5, 0.25, -0.25, 1.5, 0.25, -0.25, 1.5, -0.25], [0.25, 1.5, -0.25, 0.25, 2.0, -0.25, 0.25, 2.0, 0.25, 0.25, 1.5, 0.25], [-0.25, 1.5, 0.25, -0.25, 2.0, 0.25, -0.25, 2.0, -0.25, -0.25, 1.5, -0.25]],'tex_coords':[[0.5333333333333333, 0.0, 0.5333333333333333, 0.5, 0.6, 0.5, 0.6, 0.0], [0.6666666666666666, 0.0, 0.6666666666666666, 0.5, 0.7333333333333333, 0.5, 0.7333333333333333, 0.0], [0.5333333333333333, 0.5, 0.5333333333333333, 1.0, 0.6, 1.0, 0.6, 0.5], [0.6, 0.5, 0.6, 1.0, 0.6666666666666666, 1.0, 0.6666666666666666, 0.5], [0.6, 0.0, 0.6, 0.5, 0.6666666666666666, 0.5, 0.6666666666666666, 0.0], [0.4666666666666667, 0.0, 0.4666666666666667, 0.5, 0.5333333333333333, 0.5, 0.5333333333333333, 0.0]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'rightArm','pivot':[-0.3125, 1.375, 0.0],'vertices':[[-0.375, 0.75, -0.0625, -0.375, 1.5, -0.0625, -0.25, 1.5, -0.0625, -0.25, 0.75, -0.0625], [-0.25, 0.75, 0.0625, -0.25, 1.5, 0.0625, -0.375, 1.5, 0.0625, -0.375, 0.75, 0.0625], [-0.375, 1.5, -0.0625, -0.375, 1.5, 0.0625, -0.25, 1.5, 0.0625, -0.25, 1.5, -0.0625], [-0.25, 0.75, -0.0625, -0.25, 0.75, 0.0625, -0.375, 0.75, 0.0625, -0.375, 0.75, -0.0625], [-0.25, 0.75, -0.0625, -0.25, 1.5, -0.0625, -0.25, 1.5, 0.0625, -0.25, 0.75, 0.0625], [-0.375, 0.75, 0.0625, -0.375, 1.5, 0.0625, -0.375, 1.5, -0.0625, -0.375, 0.75, -0.0625]],'tex_coords':[[0.75, 0.125, 0.75, 0.875, 0.7666666666666667, 0.875, 0.7666666666666667, 0.125], [0.7833333333333333, 0.125, 0.7833333333333333, 0.875, 0.8, 0.875, 0.8, 0.125], [0.75, 0.875, 0.75, 1.0, 0.7666666666666667, 1.0, 0.7666666666666667, 0.875], [0.7666666666666667, 0.875, 0.7666666666666667, 1.0, 0.7833333333333333, 1.0, 0.7833333333333333, 0.875], [0.7666666666666667, 0.125, 0.7666666666666667, 0.875, 0.7833333333333333, 0.875, 0.7833333333333333, 0.125], [0.7333333333333333, 0.125, 0.7333333333333333, 0.875, 0.75, 0.875, 0.75, 0.125]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'leftArm','pivot':[0.3125, 1.375, 0.0],'vertices':[[0.25, 0.75, -0.0625, 0.25, 1.5, -0.0625, 0.375, 1.5, -0.0625, 0.375, 0.75, -0.0625], [0.375, 0.75, 0.0625, 0.375, 1.5, 0.0625, 0.25, 1.5, 0.0625, 0.25, 0.75, 0.0625], [0.25, 1.5, -0.0625, 0.25, 1.5, 0.0625, 0.375, 1.5, 0.0625, 0.375, 1.5, -0.0625], [0.375, 0.75, -0.0625, 0.375, 0.75, 0.0625, 0.25, 0.75, 0.0625, 0.25, 0.75, -0.0625], [0.375, 0.75, -0.0625, 0.375, 1.5, -0.0625, 0.375, 1.5, 0.0625, 0.375, 0.75, 0.0625], [0.25, 0.75, 0.0625, 0.25, 1.5, 0.0625, 0.25, 1.5, -0.0625, 0.25, 0.75, -0.0625]],'tex_coords':[[0.8166666666666667, 0.125, 0.8166666666666667, 0.875, 0.8333333333333334, 0.875, 0.8333333333333334, 0.125], [0.85, 0.125, 0.85, 0.875, 0.8666666666666667, 0.875, 0.8666666666666667, 0.125], [0.8166666666666667, 0.875, 0.8166666666666667, 1.0, 0.8333333333333334, 1.0, 0.8333333333333334, 0.875], [0.8333333333333334, 0.875, 0.8333333333333334, 1.0, 0.85, 1.0, 0.85, 0.875], [0.8333333333333334, 0.125, 0.8333333333333334, 0.875, 0.85, 0.875, 0.85, 0.125], [0.8, 0.125, 0.8, 0.875, 0.8166666666666667, 0.875, 0.8166666666666667, 0.125]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'rightLeg','pivot':[-0.125, 0.75, 0.0],'vertices':[[-0.1875, 0.0, -0.0625, -0.1875, 0.75, -0.0625, -0.0625, 0.75, -0.0625, -0.0625, 0.0, -0.0625], [-0.0625, 0.0, 0.0625, -0.0625, 0.75, 0.0625, -0.1875, 0.75, 0.0625, -0.1875, 0.0, 0.0625], [-0.1875, 0.75, -0.0625, -0.1875, 0.75, 0.0625, -0.0625, 0.75, 0.0625, -0.0625, 0.75, -0.0625], [-0.0625, 0.0, -0.0625, -0.0625, 0.0, 0.0625, -0.1875, 0.0, 0.0625, -0.1875, 0.0, -0.0625], [-0.0625, 0.0, -0.0625, -0.0625, 0.75, -0.0625, -0.0625, 0.75, 0.0625, -0.0625, 0.0, 0.0625], [-0.1875, 0.0, 0.0625, -0.1875, 0.75, 0.0625, -0.1875, 0.75, -0.0625, -0.1875, 0.0, -0.0625]],'tex_coords':[[0.8833333333333333, 0.125, 0.8833333333333333, 0.875, 0.9, 0.875, 0.9, 0.125], [0.9166666666666666, 0.125, 0.9166666666666666, 0.875, 0.9333333333333333, 0.875, 0.9333333333333333, 0.125], [0.8833333333333333, 0.875, 0.8833333333333333, 1.0, 0.9, 1.0, 0.9, 0.875], [0.9, 0.875, 0.9, 1.0, 0.9166666666666666, 1.0, 0.9166666666666666, 0.875], [0.9, 0.125, 0.9, 0.875, 0.9166666666666666, 0.875, 0.9166666666666666, 0.125], [0.8666666666666667, 0.125, 0.8666666666666667, 0.875, 0.8833333333333333, 0.875, 0.8833333333333333, 0.125]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'leftLeg','pivot':[0.125, 0.75, 0.0],'vertices':[[0.0625, 0.0, -0.0625, 0.0625, 0.75, -0.0625, 0.1875, 0.75, -0.0625, 0.1875, 0.0, -0.0625], [0.1875, 0.0, 0.0625, 0.1875, 0.75, 0.0625, 0.0625, 0.75, 0.0625, 0.0625, 0.0, 0.0625], [0.0625, 0.75, -0.0625, 0.0625, 0.75, 0.0625, 0.1875, 0.75, 0.0625, 0.1875, 0.75, -0.0625], [0.1875, 0.0, -0.0625, 0.1875, 0.0, 0.0625, 0.0625, 0.0, 0.0625, 0.0625, 0.0, -0.0625], [0.1875, 0.0, -0.0625, 0.1875, 0.75, -0.0625, 0.1875, 0.75, 0.0625, 0.1875, 0.0, 0.0625], [0.0625, 0.0, 0.0625, 0.0625, 0.75, 0.0625, 0.0625, 0.75, -0.0625, 0.0625, 0.0, -0.0625]],'tex_coords':[[0.95, 0.125, 0.95, 0.875, 0.9666666666666667, 0.875, 0.9666666666666667, 0.125], [0.9833333333333333, 0.125, 0.9833333333333333, 0.875, 1.0, 0.875, 1.0, 0.125], [0.95, 0.875, 0.95, 1.0, 0.9666666666666667, 1.0, 0.9666666666666667, 0.875], [0.9666666666666667, 0.875, 0.9666666666666667, 1.0, 0.9833333333333333, 1.0, 0.9833333333333333, 0.875], [0.9666666666666667, 0.125, 0.9666666666666667, 0.875, 0.9833333333333333, 0.875, 0.9833333333333333, 0.125], [0.9333333333333333, 0.125, 0.9333333333333333, 0.875, 0.95, 0.875, 0.95, 0.125]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}] diff --git a/community/models/slab.py b/community/models/slab.py new file mode 100644 index 00000000..794cc01e --- /dev/null +++ b/community/models/slab.py @@ -0,0 +1,39 @@ +transparent = True +transparency = 2 +is_cube = False +glass = False +translucent = False + +colliders = [ + [ + (-0.5, -0.5, -0.5), + ( 0.5, 0.0, 0.5) + ] +] + +vertex_positions = [ + [ 0.5, 0.0, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.0, -0.5], # right + [-0.5, 0.0, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.0, 0.5], # left + [ 0.5, 0.0, 0.5, 0.5, 0.0, -0.5, -0.5, 0.0, -0.5, -0.5, 0.0, 0.5], # top + [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom + [-0.5, 0.0, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.0, 0.5], # front + [ 0.5, 0.0, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.0, -0.5], # back +] + +tex_coords = [ + [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], + [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], + [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], +] + +shading_values = [ + [0.6, 0.6, 0.6, 0.6], + [0.6, 0.6, 0.6, 0.6], + [1.0, 1.0, 1.0, 1.0], + [0.4, 0.4, 0.4, 0.4], + [0.8, 0.8, 0.8, 0.8], + [0.8, 0.8, 0.8, 0.8], +] diff --git a/community/models/snow.py b/community/models/snow.py new file mode 100644 index 00000000..4a2bab4e --- /dev/null +++ b/community/models/snow.py @@ -0,0 +1,27 @@ +transparent = True +transparency = 2 +is_cube = False +glass = False +translucent = False + +colliders = [ + [ + (-0.5, -0.5000, -0.5), + ( 0.5, -0.4375, 0.5) + ] +] + +vertex_positions = [ + [ 0.5, -0.4375, 0.5, 0.5, -0.4375, -0.5, -0.5, -0.4375, -0.5, -0.5, -0.4375, 0.5], # top + [-0.5, -0.4375, 0.5, -0.5, -0.4375, -0.5, 0.5, -0.4375, -0.5, 0.5, -0.4375, 0.5], # bottom +] + +tex_coords = [ + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], +] + +shading_values = [ + [1.0, 1.0, 1.0, 1.0], + [0.4, 0.4, 0.4, 0.4], +] diff --git a/community/models/soil.py b/community/models/soil.py new file mode 100644 index 00000000..b54d522e --- /dev/null +++ b/community/models/soil.py @@ -0,0 +1,39 @@ +transparent = True +transparency = 2 +is_cube = False +glass = False +translucent = False + +colliders = [ + [ + (-0.5, -0.5000, -0.5), + ( 0.5, 0.4375, 0.5) + ] +] + +vertex_positions = [ + [ 0.5, 0.4375, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.4375, -0.5], # right + [-0.5, 0.4375, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.4375, 0.5], # left + [ 0.5, 0.4375, 0.5, 0.5, 0.4375, -0.5, -0.5, 0.4375, -0.5, -0.5, 0.4375, 0.5], # top + [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom + [-0.5, 0.4375, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.4375, 0.5], # front + [ 0.5, 0.4375, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.4375, -0.5], # back +] + +tex_coords = [ + [0.0, 0.9375, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.9375, 0.0], + [0.0, 0.9375, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.9375, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 0.9375, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.9375, 0.0], + [0.0, 0.9375, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.9375, 0.0], +] + +shading_values = [ + [0.6, 0.6, 0.6, 0.6], + [0.6, 0.6, 0.6, 0.6], + [1.0, 1.0, 1.0, 1.0], + [0.4, 0.4, 0.4, 0.4], + [0.8, 0.8, 0.8, 0.8], + [0.8, 0.8, 0.8, 0.8], +] diff --git a/community/models/stairs.py b/community/models/stairs.py new file mode 100644 index 00000000..794cc01e --- /dev/null +++ b/community/models/stairs.py @@ -0,0 +1,39 @@ +transparent = True +transparency = 2 +is_cube = False +glass = False +translucent = False + +colliders = [ + [ + (-0.5, -0.5, -0.5), + ( 0.5, 0.0, 0.5) + ] +] + +vertex_positions = [ + [ 0.5, 0.0, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.0, -0.5], # right + [-0.5, 0.0, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.0, 0.5], # left + [ 0.5, 0.0, 0.5, 0.5, 0.0, -0.5, -0.5, 0.0, -0.5, -0.5, 0.0, 0.5], # top + [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom + [-0.5, 0.0, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.0, 0.5], # front + [ 0.5, 0.0, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.0, -0.5], # back +] + +tex_coords = [ + [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], + [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], + [0.0, 0.5, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 0.5, 0.0], +] + +shading_values = [ + [0.6, 0.6, 0.6, 0.6], + [0.6, 0.6, 0.6, 0.6], + [1.0, 1.0, 1.0, 1.0], + [0.4, 0.4, 0.4, 0.4], + [0.8, 0.8, 0.8, 0.8], + [0.8, 0.8, 0.8, 0.8], +] diff --git a/community/models/tinted_glass.py b/community/models/tinted_glass.py new file mode 100644 index 00000000..c5b6daee --- /dev/null +++ b/community/models/tinted_glass.py @@ -0,0 +1,39 @@ +transparent = True +transparency = 1 +is_cube = True +glass = True +translucent = True + +colliders = [ + [ + (-0.5, -0.5, -0.5), + ( 0.5, 0.5, 0.5) + ] +] + +vertex_positions = [ + [ 0.5, 0.5, 0.5, 0.5, -0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5], # right + [-0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5, 0.5, 0.5], # left + [ 0.5, 0.5, 0.5, 0.5, 0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, 0.5], # top + [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom + [-0.5, 0.5, 0.5, -0.5, -0.5, 0.5, 0.5, -0.5, 0.5, 0.5, 0.5, 0.5], # front + [ 0.5, 0.5, -0.5, 0.5, -0.5, -0.5, -0.5, -0.5, -0.5, -0.5, 0.5, -0.5], # back +] + +tex_coords = [ + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], +] + +shading_values = [ + [0.6, 0.6, 0.6, 0.6], + [0.6, 0.6, 0.6, 0.6], + [1.0, 1.0, 1.0, 1.0], + [0.4, 0.4, 0.4, 0.4], + [0.8, 0.8, 0.8, 0.8], + [0.8, 0.8, 0.8, 0.8], +] diff --git a/community/models/torch.py b/community/models/torch.py new file mode 100644 index 00000000..37d47795 --- /dev/null +++ b/community/models/torch.py @@ -0,0 +1,34 @@ +transparent = True +transparency = 2 +is_cube = False +glass = False +translucent = False + +colliders = [] + +vertex_positions = [ + [ 0.0625, 0.5, 0.5, 0.0625, -0.5, 0.5, 0.0625, -0.5, -0.5, 0.0625, 0.5, -0.5], # right + [-0.0625, 0.5, -0.5, -0.0625, -0.5, -0.5, -0.0625, -0.5, 0.5, -0.0625, 0.5, 0.5], # left + [ 0.5, 0.125, 0.5, 0.5, 0.125, -0.5, -0.5, 0.125, -0.5, -0.5, 0.125, 0.5], # top + [-0.5, -0.5, 0.5, -0.5, -0.5, -0.5, 0.5, -0.5, -0.5, 0.5, -0.5, 0.5], # bottom + [-0.5, 0.5, 0.0625, -0.5, -0.5, 0.0625, 0.5, -0.5, 0.0625, 0.5, 0.5, 0.0625], # front + [ 0.5, 0.5, -0.0625, 0.5, -0.5, -0.0625, -0.5, -0.5, -0.0625, -0.5, 0.5, -0.0625], # back +] + +tex_coords = [ + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], + [0.0, 1.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 1.0, 1.0, 0.0], +] + +shading_values = [ + [0.6, 0.6, 0.6, 0.6], + [0.6, 0.6, 0.6, 0.6], + [1.0, 1.0, 1.0, 1.0], + [0.4, 0.4, 0.4, 0.4], + [0.8, 0.8, 0.8, 0.8], + [0.8, 0.8, 0.8, 0.8], +] diff --git a/community/models/zombie.py b/community/models/zombie.py new file mode 100644 index 00000000..d1650af9 --- /dev/null +++ b/community/models/zombie.py @@ -0,0 +1,8 @@ + +transparent = True +is_cube = False +glass = False + +colliders = [] + +bones = [{'name':'body','pivot':[0.0, 1.5, 0.0],'vertices':[[-0.25, 0.75, -0.125, -0.25, 1.5, -0.125, 0.25, 1.5, -0.125, 0.25, 0.75, -0.125], [0.25, 0.75, 0.125, 0.25, 1.5, 0.125, -0.25, 1.5, 0.125, -0.25, 0.75, 0.125], [-0.25, 1.5, -0.125, -0.25, 1.5, 0.125, 0.25, 1.5, 0.125, 0.25, 1.5, -0.125], [0.25, 0.75, -0.125, 0.25, 0.75, 0.125, -0.25, 0.75, 0.125, -0.25, 0.75, -0.125], [0.25, 0.75, -0.125, 0.25, 1.5, -0.125, 0.25, 1.5, 0.125, 0.25, 0.75, 0.125], [-0.25, 0.75, 0.125, -0.25, 1.5, 0.125, -0.25, 1.5, -0.125, -0.25, 0.75, -0.125]],'tex_coords':[[0.02631578947368421, 0.0, 0.02631578947368421, 0.75, 0.07894736842105263, 0.75, 0.07894736842105263, 0.0], [0.10526315789473684, 0.0, 0.10526315789473684, 0.75, 0.15789473684210525, 0.75, 0.15789473684210525, 0.0], [0.02631578947368421, 0.75, 0.02631578947368421, 1.0, 0.07894736842105263, 1.0, 0.07894736842105263, 0.75], [0.07894736842105263, 0.75, 0.07894736842105263, 1.0, 0.13157894736842105, 1.0, 0.13157894736842105, 0.75], [0.07894736842105263, 0.0, 0.07894736842105263, 0.75, 0.10526315789473684, 0.75, 0.10526315789473684, 0.0], [0.0, 0.0, 0.0, 0.75, 0.02631578947368421, 0.75, 0.02631578947368421, 0.0]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'head','pivot':[0.0, 1.5, 0.0],'vertices':[[-0.25, 1.5, -0.25, -0.25, 2.0, -0.25, 0.25, 2.0, -0.25, 0.25, 1.5, -0.25], [0.25, 1.5, 0.25, 0.25, 2.0, 0.25, -0.25, 2.0, 0.25, -0.25, 1.5, 0.25], [-0.25, 2.0, -0.25, -0.25, 2.0, 0.25, 0.25, 2.0, 0.25, 0.25, 2.0, -0.25], [0.25, 1.5, -0.25, 0.25, 1.5, 0.25, -0.25, 1.5, 0.25, -0.25, 1.5, -0.25], [0.25, 1.5, -0.25, 0.25, 2.0, -0.25, 0.25, 2.0, 0.25, 0.25, 1.5, 0.25], [-0.25, 1.5, 0.25, -0.25, 2.0, 0.25, -0.25, 2.0, -0.25, -0.25, 1.5, -0.25]],'tex_coords':[[0.21052631578947367, 0.0, 0.21052631578947367, 0.5, 0.2631578947368421, 0.5, 0.2631578947368421, 0.0], [0.3157894736842105, 0.0, 0.3157894736842105, 0.5, 0.3684210526315789, 0.5, 0.3684210526315789, 0.0], [0.21052631578947367, 0.5, 0.21052631578947367, 1.0, 0.2631578947368421, 1.0, 0.2631578947368421, 0.5], [0.2631578947368421, 0.5, 0.2631578947368421, 1.0, 0.3157894736842105, 1.0, 0.3157894736842105, 0.5], [0.2631578947368421, 0.0, 0.2631578947368421, 0.5, 0.3157894736842105, 0.5, 0.3157894736842105, 0.0], [0.15789473684210525, 0.0, 0.15789473684210525, 0.5, 0.21052631578947367, 0.5, 0.21052631578947367, 0.0]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'hat','pivot':[0.0, 1.5, 0.0],'vertices':[[-0.25, 1.5, -0.25, -0.25, 2.0, -0.25, 0.25, 2.0, -0.25, 0.25, 1.5, -0.25], [0.25, 1.5, 0.25, 0.25, 2.0, 0.25, -0.25, 2.0, 0.25, -0.25, 1.5, 0.25], [-0.25, 2.0, -0.25, -0.25, 2.0, 0.25, 0.25, 2.0, 0.25, 0.25, 2.0, -0.25], [0.25, 1.5, -0.25, 0.25, 1.5, 0.25, -0.25, 1.5, 0.25, -0.25, 1.5, -0.25], [0.25, 1.5, -0.25, 0.25, 2.0, -0.25, 0.25, 2.0, 0.25, 0.25, 1.5, 0.25], [-0.25, 1.5, 0.25, -0.25, 2.0, 0.25, -0.25, 2.0, -0.25, -0.25, 1.5, -0.25]],'tex_coords':[[0.42105263157894735, 0.0, 0.42105263157894735, 0.5, 0.47368421052631576, 0.5, 0.47368421052631576, 0.0], [0.5263157894736842, 0.0, 0.5263157894736842, 0.5, 0.5789473684210527, 0.5, 0.5789473684210527, 0.0], [0.42105263157894735, 0.5, 0.42105263157894735, 1.0, 0.47368421052631576, 1.0, 0.47368421052631576, 0.5], [0.47368421052631576, 0.5, 0.47368421052631576, 1.0, 0.5263157894736842, 1.0, 0.5263157894736842, 0.5], [0.47368421052631576, 0.0, 0.47368421052631576, 0.5, 0.5263157894736842, 0.5, 0.5263157894736842, 0.0], [0.3684210526315789, 0.0, 0.3684210526315789, 0.5, 0.42105263157894735, 0.5, 0.42105263157894735, 0.0]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'rightArm','pivot':[-0.3125, 1.375, 0.0],'vertices':[[-0.5, 0.75, -0.125, -0.5, 1.5, -0.125, -0.25, 1.5, -0.125, -0.25, 0.75, -0.125], [-0.25, 0.75, 0.125, -0.25, 1.5, 0.125, -0.5, 1.5, 0.125, -0.5, 0.75, 0.125], [-0.5, 1.5, -0.125, -0.5, 1.5, 0.125, -0.25, 1.5, 0.125, -0.25, 1.5, -0.125], [-0.25, 0.75, -0.125, -0.25, 0.75, 0.125, -0.5, 0.75, 0.125, -0.5, 0.75, -0.125], [-0.25, 0.75, -0.125, -0.25, 1.5, -0.125, -0.25, 1.5, 0.125, -0.25, 0.75, 0.125], [-0.5, 0.75, 0.125, -0.5, 1.5, 0.125, -0.5, 1.5, -0.125, -0.5, 0.75, -0.125]],'tex_coords':[[0.6052631578947368, 0.0, 0.6052631578947368, 0.75, 0.631578947368421, 0.75, 0.631578947368421, 0.0], [0.6578947368421053, 0.0, 0.6578947368421053, 0.75, 0.6842105263157895, 0.75, 0.6842105263157895, 0.0], [0.6052631578947368, 0.75, 0.6052631578947368, 1.0, 0.631578947368421, 1.0, 0.631578947368421, 0.75], [0.631578947368421, 0.75, 0.631578947368421, 1.0, 0.6578947368421053, 1.0, 0.6578947368421053, 0.75], [0.631578947368421, 0.0, 0.631578947368421, 0.75, 0.6578947368421053, 0.75, 0.6578947368421053, 0.0], [0.5789473684210527, 0.0, 0.5789473684210527, 0.75, 0.6052631578947368, 0.75, 0.6052631578947368, 0.0]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'leftArm','pivot':[0.3125, 1.375, 0.0],'vertices':[[0.25, 0.75, -0.125, 0.25, 1.5, -0.125, 0.5, 1.5, -0.125, 0.5, 0.75, -0.125], [0.5, 0.75, 0.125, 0.5, 1.5, 0.125, 0.25, 1.5, 0.125, 0.25, 0.75, 0.125], [0.25, 1.5, -0.125, 0.25, 1.5, 0.125, 0.5, 1.5, 0.125, 0.5, 1.5, -0.125], [0.5, 0.75, -0.125, 0.5, 0.75, 0.125, 0.25, 0.75, 0.125, 0.25, 0.75, -0.125], [0.5, 0.75, -0.125, 0.5, 1.5, -0.125, 0.5, 1.5, 0.125, 0.5, 0.75, 0.125], [0.25, 0.75, 0.125, 0.25, 1.5, 0.125, 0.25, 1.5, -0.125, 0.25, 0.75, -0.125]],'tex_coords':[[0.7105263157894737, 0.0, 0.7105263157894737, 0.75, 0.7368421052631579, 0.75, 0.7368421052631579, 0.0], [0.7631578947368421, 0.0, 0.7631578947368421, 0.75, 0.7894736842105263, 0.75, 0.7894736842105263, 0.0], [0.7105263157894737, 0.75, 0.7105263157894737, 1.0, 0.7368421052631579, 1.0, 0.7368421052631579, 0.75], [0.7368421052631579, 0.75, 0.7368421052631579, 1.0, 0.7631578947368421, 1.0, 0.7631578947368421, 0.75], [0.7368421052631579, 0.0, 0.7368421052631579, 0.75, 0.7631578947368421, 0.75, 0.7631578947368421, 0.0], [0.6842105263157895, 0.0, 0.6842105263157895, 0.75, 0.7105263157894737, 0.75, 0.7105263157894737, 0.0]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'rightLeg','pivot':[-0.11875, 0.75, 0.0],'vertices':[[-0.24375000596046448, 0.0, -0.125, -0.24375000596046448, 0.75, -0.125, 0.0062500000931322575, 0.75, -0.125, 0.0062500000931322575, 0.0, -0.125], [0.0062500000931322575, 0.0, 0.125, 0.0062500000931322575, 0.75, 0.125, -0.24375000596046448, 0.75, 0.125, -0.24375000596046448, 0.0, 0.125], [-0.24375000596046448, 0.75, -0.125, -0.24375000596046448, 0.75, 0.125, 0.0062500000931322575, 0.75, 0.125, 0.0062500000931322575, 0.75, -0.125], [0.0062500000931322575, 0.0, -0.125, 0.0062500000931322575, 0.0, 0.125, -0.24375000596046448, 0.0, 0.125, -0.24375000596046448, 0.0, -0.125], [0.0062500000931322575, 0.0, -0.125, 0.0062500000931322575, 0.75, -0.125, 0.0062500000931322575, 0.75, 0.125, 0.0062500000931322575, 0.0, 0.125], [-0.24375000596046448, 0.0, 0.125, -0.24375000596046448, 0.75, 0.125, -0.24375000596046448, 0.75, -0.125, -0.24375000596046448, 0.0, -0.125]],'tex_coords':[[0.8157894736842105, 0.0, 0.8157894736842105, 0.75, 0.8421052631578947, 0.75, 0.8421052631578947, 0.0], [0.868421052631579, 0.0, 0.868421052631579, 0.75, 0.8947368421052632, 0.75, 0.8947368421052632, 0.0], [0.8157894736842105, 0.75, 0.8157894736842105, 1.0, 0.8421052631578947, 1.0, 0.8421052631578947, 0.75], [0.8421052631578947, 0.75, 0.8421052631578947, 1.0, 0.868421052631579, 1.0, 0.868421052631579, 0.75], [0.8421052631578947, 0.0, 0.8421052631578947, 0.75, 0.868421052631579, 0.75, 0.868421052631579, 0.0], [0.7894736842105263, 0.0, 0.7894736842105263, 0.75, 0.8157894736842105, 0.75, 0.8157894736842105, 0.0]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}, {'name':'leftLeg','pivot':[0.11875, 0.75, 0.0],'vertices':[[-0.0062500000931322575, 0.0, -0.125, -0.0062500000931322575, 0.75, -0.125, 0.24375000596046448, 0.75, -0.125, 0.24375000596046448, 0.0, -0.125], [0.24375000596046448, 0.0, 0.125, 0.24375000596046448, 0.75, 0.125, -0.0062500000931322575, 0.75, 0.125, -0.0062500000931322575, 0.0, 0.125], [-0.0062500000931322575, 0.75, -0.125, -0.0062500000931322575, 0.75, 0.125, 0.24375000596046448, 0.75, 0.125, 0.24375000596046448, 0.75, -0.125], [0.24375000596046448, 0.0, -0.125, 0.24375000596046448, 0.0, 0.125, -0.0062500000931322575, 0.0, 0.125, -0.0062500000931322575, 0.0, -0.125], [0.24375000596046448, 0.0, -0.125, 0.24375000596046448, 0.75, -0.125, 0.24375000596046448, 0.75, 0.125, 0.24375000596046448, 0.0, 0.125], [-0.0062500000931322575, 0.0, 0.125, -0.0062500000931322575, 0.75, 0.125, -0.0062500000931322575, 0.75, -0.125, -0.0062500000931322575, 0.0, -0.125]],'tex_coords':[[0.9210526315789473, 0.0, 0.9210526315789473, 0.75, 0.9473684210526315, 0.75, 0.9473684210526315, 0.0], [0.9736842105263158, 0.0, 0.9736842105263158, 0.75, 1.0, 0.75, 1.0, 0.0], [0.9210526315789473, 0.75, 0.9210526315789473, 1.0, 0.9473684210526315, 1.0, 0.9473684210526315, 0.75], [0.9473684210526315, 0.75, 0.9473684210526315, 1.0, 0.9736842105263158, 1.0, 0.9736842105263158, 0.75], [0.9473684210526315, 0.0, 0.9473684210526315, 0.75, 0.9736842105263158, 0.75, 0.9736842105263158, 0.0], [0.8947368421052632, 0.0, 0.8947368421052632, 0.75, 0.9210526315789473, 0.75, 0.9210526315789473, 0.0]],'shading_values':[[1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0], [1.0, 1.0, 1.0, 1.0]]}] diff --git a/community/player.py b/community/player.py new file mode 100644 index 00000000..e69de29b diff --git a/community/shader.py b/community/shader.py new file mode 100644 index 00000000..16d4ebb7 --- /dev/null +++ b/community/shader.py @@ -0,0 +1,71 @@ +import ctypes +import pyglet.gl as gl + +class Shader_error(Exception): + def __init__(self, message): + self.message = message + +def create_shader(target, source_path): + # read shader source + + source_file = open(source_path, "rb") + source = source_file.read() + source_file.close() + + source_length = ctypes.c_int(len(source) + 1) + source_buffer = ctypes.create_string_buffer(source) + + buffer_pointer = ctypes.cast( + ctypes.pointer(ctypes.pointer(source_buffer)), + ctypes.POINTER(ctypes.POINTER(ctypes.c_char))) + + # compile shader + + gl.glShaderSource(target, 1, buffer_pointer, ctypes.byref(source_length)) + gl.glCompileShader(target) + + # handle potential errors + + log_length = gl.GLint(0) + gl.glGetShaderiv(target, gl.GL_INFO_LOG_LENGTH, ctypes.byref(log_length)) + + log_buffer = ctypes.create_string_buffer(log_length.value) + gl.glGetShaderInfoLog(target, log_length, None, log_buffer) + + if log_length: + raise Shader_error(str(log_buffer.value)) + +class Shader: + def __init__(self, vert_path, frag_path): + self.program = gl.glCreateProgram() + + # create vertex shader + + self.vert_shader = gl.glCreateShader(gl.GL_VERTEX_SHADER) + create_shader(self.vert_shader, vert_path) + gl.glAttachShader(self.program, self.vert_shader) + + # create fragment shader + + self.frag_shader = gl.glCreateShader(gl.GL_FRAGMENT_SHADER) + create_shader(self.frag_shader, frag_path) + gl.glAttachShader(self.program, self.frag_shader) + + # link program and clean up + + gl.glLinkProgram(self.program) + + gl.glDeleteShader(self.vert_shader) + gl.glDeleteShader(self.frag_shader) + + def __del__(self): + gl.glDeleteProgram(self.program) + + def find_uniform(self, name): + return gl.glGetUniformLocation(self.program, ctypes.create_string_buffer(name)) + + def uniform_matrix(self, location, matrix): + gl.glUniformMatrix4fv(location, 1, gl.GL_FALSE, (gl.GLfloat * 16) (*sum(matrix.data, []))) + + def use(self): + gl.glUseProgram(self.program) \ No newline at end of file diff --git a/community/start.bat b/community/start.bat new file mode 100644 index 00000000..775351f9 --- /dev/null +++ b/community/start.bat @@ -0,0 +1,3 @@ +pip install pyglet +pip install noise +py main.py \ No newline at end of file diff --git a/community/subchunk.py b/community/subchunk.py new file mode 100644 index 00000000..dc27b92c --- /dev/null +++ b/community/subchunk.py @@ -0,0 +1,90 @@ +SUBCHUNK_WIDTH = 4 +SUBCHUNK_HEIGHT = 4 +SUBCHUNK_LENGTH = 4 + +class Subchunk: + def __init__(self, parent, subchunk_position): + self.parent = parent + self.world = self.parent.world + + self.subchunk_position = subchunk_position + + self.local_position = ( + self.subchunk_position[0] * SUBCHUNK_WIDTH, + self.subchunk_position[1] * SUBCHUNK_HEIGHT, + self.subchunk_position[2] * SUBCHUNK_LENGTH) + + self.position = ( + self.parent.position[0] + self.local_position[0], + self.parent.position[1] + self.local_position[1], + self.parent.position[2] + self.local_position[2]) + + # mesh variables + + self.mesh_vertex_positions = [] + self.mesh_tex_coords = [] + self.mesh_shading_values = [] + + self.mesh_index_counter = 0 + self.mesh_indices = [] + + def update_mesh(self): + self.mesh_vertex_positions = [] + self.mesh_tex_coords = [] + self.mesh_shading_values = [] + + self.mesh_index_counter = 0 + self.mesh_indices = [] + + def add_face(face): + vertex_positions = block_type.vertex_positions[face].copy() + + for i in range(4): + vertex_positions[i * 3 + 0] += x + vertex_positions[i * 3 + 1] += y + vertex_positions[i * 3 + 2] += z + + self.mesh_vertex_positions.extend(vertex_positions) + + indices = [0, 1, 2, 0, 2, 3] + for i in range(6): + indices[i] += self.mesh_index_counter + + self.mesh_indices.extend(indices) + self.mesh_index_counter += 4 + + self.mesh_tex_coords.extend(block_type.tex_coords[face]) + self.mesh_shading_values.extend(block_type.shading_values[face]) + + for local_x in range(SUBCHUNK_WIDTH): + for local_y in range(SUBCHUNK_HEIGHT): + for local_z in range(SUBCHUNK_LENGTH): + parent_lx = self.local_position[0] + local_x + parent_ly = self.local_position[1] + local_y + parent_lz = self.local_position[2] + local_z + + block_number = self.parent.blocks[parent_lx][parent_ly][parent_lz] + + if block_number: + block_type = self.world.block_types[block_number] + + x, y, z = ( + self.position[0] + local_x, + self.position[1] + local_y, + self.position[2] + local_z) + + # if block is cube, we want it to check neighbouring blocks so that we don't uselessly render faces + # if block isn't a cube, we just want to render all faces, regardless of neighbouring blocks + # since the vast majority of blocks are probably anyway going to be cubes, this won't impact performance all that much; the amount of useless faces drawn is going to be minimal + + if block_type.is_cube: + if not self.world.is_opaque_block((x + 1, y, z)): add_face(0) + if not self.world.is_opaque_block((x - 1, y, z)): add_face(1) + if not self.world.is_opaque_block((x, y + 1, z)): add_face(2) + if not self.world.is_opaque_block((x, y - 1, z)): add_face(3) + if not self.world.is_opaque_block((x, y, z + 1)): add_face(4) + if not self.world.is_opaque_block((x, y, z - 1)): add_face(5) + + else: + for i in range(len(block_type.vertex_positions)): + add_face(i) \ No newline at end of file diff --git a/community/texture_manager.py b/community/texture_manager.py new file mode 100644 index 00000000..6cfc9fdf --- /dev/null +++ b/community/texture_manager.py @@ -0,0 +1,42 @@ +import ctypes +import pyglet + +import pyglet.gl as gl + +class Texture_manager: + def __init__(self, texture_width, texture_height, max_textures): + self.texture_width = texture_width + self.texture_height = texture_height + + self.max_textures = max_textures + + self.textures = [] + + self.texture_array = gl.GLuint(0) + gl.glGenTextures(1, self.texture_array) + gl.glBindTexture(gl.GL_TEXTURE_2D_ARRAY, self.texture_array) + + gl.glTexParameteri(gl.GL_TEXTURE_2D_ARRAY, gl.GL_TEXTURE_MIN_FILTER, gl.GL_NEAREST) + gl.glTexParameteri(gl.GL_TEXTURE_2D_ARRAY, gl.GL_TEXTURE_MAG_FILTER, gl.GL_NEAREST) + + gl.glTexImage3D( + gl.GL_TEXTURE_2D_ARRAY, 0, gl.GL_RGBA, + self.texture_width, self.texture_height, self.max_textures, + 0, gl.GL_RGBA, gl.GL_UNSIGNED_BYTE, None) + + def generate_mipmaps(self): + gl.glGenerateMipmap(gl.GL_TEXTURE_2D_ARRAY) + + def add_texture(self, texture): + if not texture in self.textures: + self.textures.append(texture) + + texture_image = pyglet.image.load(f"textures/{texture}.png").get_image_data() + gl.glBindTexture(gl.GL_TEXTURE_2D_ARRAY, self.texture_array) + + gl.glTexSubImage3D( + gl.GL_TEXTURE_2D_ARRAY, 0, + 0, 0, self.textures.index(texture), + self.texture_width, self.texture_height, 1, + gl.GL_RGBA, gl.GL_UNSIGNED_BYTE, + texture_image.get_data("RGBA", texture_image.width * 4)) \ No newline at end of file diff --git a/community/vert.glsl b/community/vert.glsl new file mode 100644 index 00000000..5a945d25 --- /dev/null +++ b/community/vert.glsl @@ -0,0 +1,18 @@ +#version 330 + +layout(location = 0) in vec3 vertex_position; +layout(location = 1) in vec3 tex_coords; +layout(location = 2) in float shading_value; + +out vec3 local_position; +out vec3 interpolated_tex_coords; +out float interpolated_shading_value; + +uniform mat4 matrix; + +void main(void) { + local_position = vertex_position; + interpolated_tex_coords = tex_coords; + interpolated_shading_value = shading_value; + gl_Position = matrix * vec4(vertex_position, 1.0); +} \ No newline at end of file diff --git a/community/world.py b/community/world.py new file mode 100644 index 00000000..f7543476 --- /dev/null +++ b/community/world.py @@ -0,0 +1,409 @@ +import math +from random import * +from noise import * +import time +import threading + +import chunk + +import block_type +import texture_manager + +# import custom block models +import models.leaves +import models.liquid +import models.plant +import models.cactus + +class World: + def __init__(self): + self.texture_manager = texture_manager.Texture_manager(16, 16, 256) + self.block_types = [None] + + self.block_types.append(block_type.Block_type(self.texture_manager, name="cobblestone", block_face_textures = {"all": "cobblestone"})) + self.block_types.append(block_type.Block_type(self.texture_manager, name="grass", block_face_textures = {"top": "grass", "bottom": "dirt", "sides": "grass_side"})) + self.block_types.append(block_type.Block_type(self.texture_manager, name="grass_block", block_face_textures = {"all": "grass"})) + self.block_types.append(block_type.Block_type(self.texture_manager, name="dirt", block_face_textures = {"all": "dirt"})) + self.block_types.append(block_type.Block_type(self.texture_manager, name="stone", block_face_textures = {"all": "stone"})) + self.block_types.append(block_type.Block_type(self.texture_manager, name="sand", block_face_textures = {"all": "sand"})) + self.block_types.append(block_type.Block_type(self.texture_manager, name="planks", block_face_textures = {"all": "planks"})) + self.block_types.append(block_type.Block_type(self.texture_manager, name="log", block_face_textures = {"top": "log_top", "bottom": "log_top", "sides": "log_side"})) + self.block_types.append(block_type.Block_type(self.texture_manager, name="water", block_face_textures = {"all": "water"}, model = models.liquid, transparent=True)) + self.block_types.append(block_type.Block_type(self.texture_manager, name="rose", block_face_textures = {"all": "rose"}, model = models.plant)) + self.block_types.append(block_type.Block_type(self.texture_manager, name="cactus", block_face_textures = {"top": "cactus_top", "bottom": "cactus_bottom", "sides": "cactus_side"}, model = models.cactus)) + self.block_types.append(block_type.Block_type(self.texture_manager, name="dead_bush", block_face_textures = {"all": "dead_bush"}, model = models.plant)) + self.block_types.append(block_type.Block_type(self.texture_manager, name="leaves", block_face_textures = {"all": "leaves"}, model = models.leaves)) + self.block_types.append(block_type.Block_type(self.texture_manager, name="bedrock", block_face_textures = {"all": "bedrock"})) + self.block_types.append(block_type.Block_type(self.texture_manager, name="lava", block_face_textures = {"all": "lava"}, model = models.liquid, transparent=True)) + self.block_types.append(block_type.Block_type(self.texture_manager, name="coal_ore", block_face_textures = {"all": "coal_ore"})) + self.block_types.append(block_type.Block_type(self.texture_manager, name="iron_ore", block_face_textures = {"all": "iron_ore"})) + self.block_types.append(block_type.Block_type(self.texture_manager, name="diamond_ore", block_face_textures = {"all": "diamond_ore"})) + self.block_types.append(block_type.Block_type(self.texture_manager, name="under_water", block_face_textures = {"all": "water"})) + self.block_types.append(block_type.Block_type(self.texture_manager, name="under_lava", block_face_textures = {"all": "lava"})) + + self.texture_manager.generate_mipmaps() + + self.chunks = {} + + self.scale = 100.0 # Controls the frequency of the noise + self.octaves = 4 # Increased number of layers of noise to combine for more detail + self.persistence = 0.5 + self.lacunarity = 2.0 + + self.cave_scale = 10.0 # Controls the frequency of the cave noise + self.cave_threshold = 0.1 # Threshold for cave generation + + for x in range(-8, 7): + for z in range(-8, 7): + self.generate_chunk(x, z) + + # multiprocessing + + self.chunk_load_queue = {} + self.active_loading_chunks = [] + self.active_threads = 0 + + for chunk_position in self.chunks: + self.add_chunk_to_load_queue(chunk_position) + + def generate_chunk(self, x, z): + chunk_position = (x, 0, z) + current_chunk = chunk.Chunk(self, chunk_position) + trees = list() + for i in range(5): + tree_x = randint(0, 15) + tree_z = randint(0, 15) + trees.append((tree_x, tree_z)) + + chunk_offset_x = x * chunk.CHUNK_WIDTH + chunk_offset_z = z * chunk.CHUNK_LENGTH + + for i in range(chunk.CHUNK_WIDTH): + for j in range(chunk.CHUNK_HEIGHT): + for k in range(chunk.CHUNK_LENGTH): + # Use chunk-specific offsets to avoid repeating patterns + surfaceY = 60 + pnoise2( + (chunk_offset_x + i) / self.scale, + (chunk_offset_z + k) / self.scale, + octaves=self.octaves, + persistence=self.persistence, + lacunarity=self.lacunarity + ) * 50 + surfaceY = max(0, surfaceY) # Ensure surfaceY is not below 0 + + if j == 0: + current_chunk.blocks[i][j][k] = 14 + + if 0 < j < surfaceY: + cave_noise = pnoise3( + (chunk_offset_x + i) / self.cave_scale, + j / self.cave_scale, + (chunk_offset_z + k) / self.cave_scale + ) + cave_noise2 = pnoise3( + (chunk_offset_x + i) / (self.cave_scale * 2), + j / (self.cave_scale * 2), + (chunk_offset_z + k) / (self.cave_scale * 2) + ) + + if cave_noise < self.cave_threshold and cave_noise2 < self.cave_threshold and j != surfaceY-2: + current_chunk.blocks[i][j][k] = 0 # Cave block + else: + current_chunk.blocks[i][j][k] = 5 # Ground block + + for l in range(math.ceil(surfaceY), 61): + if l < 60: + current_chunk.blocks[i][l][k] = 19 # Underground block + else: + current_chunk.blocks[i][l][k] = 9 + + + + for m in range(math.ceil(surfaceY), math.ceil(surfaceY) + 2): + current_chunk.blocks[i][m][k] = 4 # Surface block + + if surfaceY > 58: + current_chunk.blocks[i][math.ceil(surfaceY)+2][k] = 2 + + # Ore generation logic + if 30 <= j <= surfaceY: + if current_chunk.blocks[i][j][k] == 5 and randint(0, 100) < 5: # Chance to place coal + current_chunk.blocks[i][j][k] = 16 # Coal ore + if 10 <= j <= 50: + if current_chunk.blocks[i][j][k] == 5 and randint(0, 100) < 2: # Chance to place iron + current_chunk.blocks[i][j][k] = 17 # Iron ore + if 2 <= j <= 15: + if current_chunk.blocks[i][j][k] == 5 and randint(0, 1000) < 2: # Chance to place diamond + current_chunk.blocks[i][j][k] = 18 # Diamond ore + + # Cave entrance generation logic + if 100 > surfaceY > 60: + if randint(0, 5000) < 2: + cave_width = randint(2, 3) + for offset_x in range(-cave_width, cave_width + 1): + for offset_z in range(-cave_width, cave_width + 1): + if 0 <= i + offset_x < chunk.CHUNK_WIDTH and 0 <= k + offset_z < chunk.CHUNK_LENGTH: + for j in range(int(surfaceY), chunk.CHUNK_HEIGHT): + cave_noise = pnoise3( + (chunk_offset_x + i + offset_x)/ self.cave_scale, + j / self.cave_scale, + (chunk_offset_z + k + offset_z)/ self.cave_scale + ) + cave_noise2 = pnoise3( + (chunk_offset_x + i + offset_x)/ (self.cave_scale * 2), + j / (self.cave_scale * 2), + (chunk_offset_z + k + offset_z)/ (self.cave_scale * 2) + ) + if cave_noise < self.cave_threshold and cave_noise2 < self.cave_threshold: + current_chunk.blocks[i + offset_x][j][k + offset_z] = 0 # Tunnel block + else: + break + + if 1 <= j <= 3 and current_chunk.blocks[i][j][k] == 0: + current_chunk.blocks[i][j][k] = 5 + + if 4 <=j <=7 and current_chunk.blocks[i][j][k] == 0: + if j<7: + current_chunk.blocks[i][j][k] = 20 + else: + current_chunk.blocks[i][j][k] = 15 + + for _ in range(5): + placed = False + attempts = 0 + while not placed and attempts < 50: # Limit attempts to find a valid tree position + tree_x = randint(0, 15) + tree_z = randint(0, 15) + baseY = math.ceil(surfaceY) + tree_y = baseY + 2 + + if current_chunk.blocks[tree_x][tree_y][tree_z] == 2: # Check if the block is grass + # Check surrounding blocks for existing trees + has_adjacent_tree = False + for dx in range(-1, 2): + for dz in range(-1, 2): + if 0 <= tree_x + dx < chunk.CHUNK_WIDTH and 0 <= tree_z + dz < chunk.CHUNK_LENGTH: + if (tree_x + dx, tree_y, tree_z + dz) in trees: + has_adjacent_tree = True + break + if has_adjacent_tree: + break + + if not has_adjacent_tree: + # Place the log blocks + for n in range(5): + current_chunk.blocks[tree_x][tree_y + n][tree_z] = 8 # Log block + + # Place the leaves blocks + leaves_height = tree_y + 5 + for dx in range(-2, 3): + for dz in range(-2, 3): + if (0 <= tree_x + dx < chunk.CHUNK_WIDTH and + 0 <= tree_z + dz < chunk.CHUNK_LENGTH): + current_chunk.blocks[tree_x + dx][leaves_height][tree_z + dz] = 13 + # Leaves block + if (0 <= tree_x< chunk.CHUNK_WIDTH and + 0 <= tree_z< chunk.CHUNK_LENGTH): + current_chunk.blocks[tree_x][leaves_height + 1][tree_z] = 13 + if (0 <= tree_x+1< chunk.CHUNK_WIDTH and + 0 <= tree_z + 1 < chunk.CHUNK_LENGTH): + current_chunk.blocks[tree_x+1][leaves_height + 1][tree_z+1] = 13 + if (0 <= tree_x - 1 < chunk.CHUNK_WIDTH and + 0 <= tree_z + 1 < chunk.CHUNK_LENGTH): + current_chunk.blocks[tree_x-1][leaves_height + 1][tree_z+1] = 13 + if (0 <= tree_x - 1 < chunk.CHUNK_WIDTH and + 0 <= tree_z - 1 < chunk.CHUNK_LENGTH): + current_chunk.blocks[tree_x-1][leaves_height + 1][tree_z-1] = 13 + if (0 <= tree_x + 1 < chunk.CHUNK_WIDTH and + 0 <= tree_z -1 < chunk.CHUNK_LENGTH): + current_chunk.blocks[tree_x+1][leaves_height + 1][tree_z-1] = 13 + if (0 <= tree_x + 1 < chunk.CHUNK_WIDTH and + 0 <= tree_z< chunk.CHUNK_LENGTH): + current_chunk.blocks[tree_x+1][leaves_height + 1][tree_z] = 13 + if (0 <= tree_x - 1 < chunk.CHUNK_WIDTH and + 0 <= tree_z < chunk.CHUNK_LENGTH): + current_chunk.blocks[tree_x-1][leaves_height + 1][tree_z] = 13 + if (0 <= tree_x < chunk.CHUNK_WIDTH and + 0 <= tree_z + 1 < chunk.CHUNK_LENGTH): + current_chunk.blocks[tree_x][leaves_height + 1][tree_z+1] = 13 + if (0 <= tree_x < chunk.CHUNK_WIDTH and + 0 <= tree_z - 1 < chunk.CHUNK_LENGTH): + current_chunk.blocks[tree_x][leaves_height + 1][tree_z-1] = 13 + if (0 <= tree_x + 2 < chunk.CHUNK_WIDTH and + 0 <= tree_z < chunk.CHUNK_LENGTH): + current_chunk.blocks[tree_x+2][leaves_height + 1][tree_z] = 13 + if (0 <= tree_x - 2 < chunk.CHUNK_WIDTH and + 0 <= tree_z < chunk.CHUNK_LENGTH): + current_chunk.blocks[tree_x-2][leaves_height + 1][tree_z] = 13 + if (0 <= tree_x < chunk.CHUNK_WIDTH and + 0 <= tree_z + 2 < chunk.CHUNK_LENGTH): + current_chunk.blocks[tree_x][leaves_height + 1][tree_z+2] = 13 + if (0 <= tree_x < chunk.CHUNK_WIDTH and + 0 <= tree_z - 2 < chunk.CHUNK_LENGTH): + current_chunk.blocks[tree_x][leaves_height + 1][tree_z-2] = 13 + if (0 <= tree_x < chunk.CHUNK_WIDTH and + 0 <= tree_z < chunk.CHUNK_LENGTH): + current_chunk.blocks[tree_x][leaves_height + 2][tree_z] = 13 + if (0 <= tree_x + 1 < chunk.CHUNK_WIDTH and + 0 <= tree_z < chunk.CHUNK_LENGTH): + current_chunk.blocks[tree_x+1][leaves_height + 2][tree_z] = 13 + if (0 <= tree_x - 1 < chunk.CHUNK_WIDTH and + 0 <= tree_z < chunk.CHUNK_LENGTH): + current_chunk.blocks[tree_x-1][leaves_height + 2][tree_z] = 13 + if (0 <= tree_x < chunk.CHUNK_WIDTH and + 0 <= tree_z + 2 < chunk.CHUNK_LENGTH): + current_chunk.blocks[tree_x][leaves_height + 2][tree_z+1] = 13 + if (0 <= tree_x < chunk.CHUNK_WIDTH and + 0 <= tree_z - 2 < chunk.CHUNK_LENGTH): + current_chunk.blocks[tree_x][leaves_height + 2][tree_z-1] = 13 + + trees.append((tree_x, tree_y, tree_z)) + placed = True + attempts += 1 + + self.chunks[chunk_position] = current_chunk + + def add_chunk_to_load_queue(self, chunk_position): + def chunk_load_function(chunk): # in separate thread + # time.sleep(0.1) + + chunk.update_subchunk_meshes() + chunk.update_mesh() + + chunk = self.chunks[chunk_position] + + thread = threading.Thread(target = chunk_load_function, args = (chunk,)) + thread.daemon = True + + self.chunk_load_queue[chunk_position] = {"chunk": chunk, "thread": thread, "running": False} + + def process_load_queue(self, propagation_position = (0, 0, 0)): + closest_chunk_position = None + closest_chunk_distance = math.inf + + for chunk_position in self.chunk_load_queue: + queue_object = self.chunk_load_queue[chunk_position] + + if queue_object["running"]: + if not queue_object["thread"].is_alive(): + queue_object["chunk"].send_mesh_data_to_gpu() # we don't wanna put this in 'chunk_load_function' because we could lose the GIL at any time during the execution of this function + + del self.chunk_load_queue[chunk_position] + + self.active_loading_chunks.remove(chunk_position) + self.active_threads -= 1 + + break # break since we just changed our dictionary's size + + continue + + chunk_distance = math.sqrt( + (chunk_position[0] * chunk.CHUNK_WIDTH - propagation_position[0]) ** 2 + + (chunk_position[1] * chunk.CHUNK_HEIGHT - propagation_position[1]) ** 2 + + (chunk_position[2] * chunk.CHUNK_LENGTH - propagation_position[2]) ** 2) + + if chunk_distance < closest_chunk_distance: + closest_chunk_distance = chunk_distance + closest_chunk_position = chunk_position + + else: # else means we didn't artificially break out of the loop (idk why we can't use 'elif' here) + if closest_chunk_position and closest_chunk_distance < 320: + chunk_position = closest_chunk_position + queue_object = self.chunk_load_queue[chunk_position] + + if self.active_threads < 1: #len(os.sched_getaffinity(0)): # 'multiprocessing.cpu_count' gives us *total* CPU count, not CPU's usable by our program + queue_object["thread"].start() + queue_object["running"] = True + + self.active_loading_chunks.append(chunk_position) + self.active_threads += 1 + + def get_chunk_position(self, position): + x, y, z = position + + return ( + math.floor(x / chunk.CHUNK_WIDTH), + math.floor(y / chunk.CHUNK_HEIGHT), + math.floor(z / chunk.CHUNK_LENGTH)) + + def get_local_position(self, position): + x, y, z = position + + return ( + int(x % chunk.CHUNK_WIDTH), + int(y % chunk.CHUNK_HEIGHT), + int(z % chunk.CHUNK_LENGTH)) + + def get_block_number(self, position): + x, y, z = position + chunk_position = self.get_chunk_position(position) + + if not chunk_position in self.chunks: + return 0 + + lx, ly, lz = self.get_local_position(position) + + block_number = self.chunks[chunk_position].blocks[lx][ly][lz] + return block_number + + def is_opaque_block(self, position): + block_type = self.block_types[self.get_block_number(position)] + + if not block_type: + return False + + return not block_type.transparent + + def set_block(self, position, number): + x, y, z = position + chunk_position = self.get_chunk_position(position) + + if not chunk_position in self.chunks: + if number == 0: + return # no point in creating a whole new chunk if we're not gonna be adding anything to it + + self.chunks[chunk_position] = chunk.Chunk(self, chunk_position) + + if self.get_block_number(position) == number: + return + + lx, ly, lz = self.get_local_position(position) + + def try_update_chunk_at_position(chunk_position, position): + if chunk_position in self.chunks and not chunk_position in self.active_loading_chunks: + self.chunks[chunk_position].update_at_position(position) + + self.chunks[chunk_position].update_mesh() + self.chunks[chunk_position].send_mesh_data_to_gpu() + + self.chunks[chunk_position].blocks[lx][ly][lz] = number + try_update_chunk_at_position(chunk_position, position) + + cx, cy, cz = chunk_position + + if lx == chunk.CHUNK_WIDTH - 1: try_update_chunk_at_position((cx + 1, cy, cz), (x + 1, y, z)) + if lx == 0: try_update_chunk_at_position((cx - 1, cy, cz), (x - 1, y, z)) + + if ly == chunk.CHUNK_HEIGHT - 1: try_update_chunk_at_position((cx, cy + 1, cz), (x, y + 1, z)) + if ly == 0: try_update_chunk_at_position((cx, cy - 1, cz), (x, y - 1, z)) + + if lz == chunk.CHUNK_LENGTH - 1: try_update_chunk_at_position((cx, cy, cz + 1), (x, y, z + 1)) + if lz == 0: try_update_chunk_at_position((cx, cy, cz - 1), (x, y, z - 1)) + + def get_nearby_blocks(self, position): + # Return a list of block positions near the player's position. + # This is a placeholder implementation. You'll need to adapt this to your world's data structure. + x, y, z = map(int, position) + nearby_blocks = [] + for dx in range(-1, 2): + for dy in range(-1, 2): + for dz in range(-1, 2): + block_pos = (x + dx, y + dy, z + dz) + if self.get_block_number(block_pos): # Check if there's a block at this position + nearby_blocks.append(block_pos) + return nearby_blocks + + + def draw(self): + for chunk_position in self.chunks: + self.chunks[chunk_position].draw() \ No newline at end of file From f00b2e2d6bcac9038b9145538e6adb7acc011f6c Mon Sep 17 00:00:00 2001 From: Rahuldesai <84022777+Rahuldesai0@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:40:34 +0530 Subject: [PATCH 4/8] Add files via upload --- community/data/blocks.mcpy | 91 ++++++++++++++++++++ community/data/entities.mcpy | 7 ++ community/logs/1718132102.8883429.log | 7 ++ community/logs/1722522224.621931.log | 7 ++ community/logs/1722522264.0477836.log | 7 ++ community/logs/1722678099.6825862.log | 7 ++ community/shaders/alpha_lighting/frag.glsl | 20 +++++ community/shaders/alpha_lighting/vert.glsl | 41 +++++++++ community/shaders/colored_lighting/frag.glsl | 21 +++++ community/shaders/colored_lighting/vert.glsl | 43 +++++++++ community/shaders/entity/frag.glsl | 18 ++++ community/shaders/entity/vert.glsl | 29 +++++++ 12 files changed, 298 insertions(+) create mode 100644 community/data/blocks.mcpy create mode 100644 community/data/entities.mcpy create mode 100644 community/logs/1718132102.8883429.log create mode 100644 community/logs/1722522224.621931.log create mode 100644 community/logs/1722522264.0477836.log create mode 100644 community/logs/1722678099.6825862.log create mode 100644 community/shaders/alpha_lighting/frag.glsl create mode 100644 community/shaders/alpha_lighting/vert.glsl create mode 100644 community/shaders/colored_lighting/frag.glsl create mode 100644 community/shaders/colored_lighting/vert.glsl create mode 100644 community/shaders/entity/frag.glsl create mode 100644 community/shaders/entity/vert.glsl diff --git a/community/data/blocks.mcpy b/community/data/blocks.mcpy new file mode 100644 index 00000000..999194ba --- /dev/null +++ b/community/data/blocks.mcpy @@ -0,0 +1,91 @@ +# block ID's from: +# https://www.minecraftforum.net/forums/minecraft-java-edition/discussion/114963-all-item-block-ids-in-one-place +# (with some slight modifications) + +1: name "Stone", texture.all stone +2: name "Grass", texture.top grass, texture.bottom dirt, texture.sides grass_side +3: name "Dirt", texture.all dirt +4: name "Cobblestone", texture.all cobblestone +5: name "Planks", texture.all planks +6: name "Sapling", model models.plant, texture.all sapling +7: name "Bedrock", texture.all bedrock +8: name "Water", model models.liquid, texture.all water +9: sameas 8, name "Stationary Water" +10: name "Lava", model models.liquid, texture.all lava +11: sameas 10, name "Stationary Lava" +12: name "Sand", texture.all sand +13: name "Gravel", texture.all gravel +14: name "Gold Ore", texture.all gold_ore +15: name "Iron Ore", texture.all iron_ore +16: name "Coal Ore", texture.all coal_ore +17: name "Log", texture.y log_y, texture.sides log_side +18: name "Leaves", model models.leaves, texture.all leaves +19: name "Sponge", texture.all sponge +20: name "Glass", model models.glass, texture.all glass +21: name "Red Cloth", texture.all red_cloth +22: name "Orange Cloth", texture.all orange_cloth +23: name "Yellow Cloth", texture.all yellow_cloth +24: name "Lime Cloth", texture.all lime_cloth +25: name "Green Cloth", texture.all green_cloth +26: name "Aqua Cloth", texture.all aqua_cloth +27: name "Cyan Cloth", texture.all cyan_cloth +28: name "Blue Cloth", texture.all blue_cloth +29: name "Purple Cloth", texture.all purple_cloth +30: name "Indigo Cloth", texture.all indigo_cloth +31: name "Violet Cloth", texture.all violet_cloth +32: name "Magenta Cloth", texture.all magenta_cloth +33: name "Pink Cloth", texture.all pink_cloth +34: name "Black Cloth", texture.all black_cloth +35: name "Grey Cloth", texture.all grey_cloth +36: name "White Cloth", texture.all white_cloth +37: name "Yellow Flower", model models.plant, texture.all yellow_flower +38: name "Red Rose", model models.plant, texture.all red_rose +39: name "Brown Mushroom", model models.plant, texture.all brown_mushroom +40: name "Red Mushroom", model models.plant, texture.all red_mushroom +41: name "Gold Block", texture.all gold_block +42: name "Iron Block", texture.all iron_block +43: name "Double Slab", texture.sides slab_side, texture.y slab_y +44: name "Slab", model models.slab, texture.sides slab_side, texture.y slab_y +45: name "Bricks", texture.all bricks +46: name "TNT", texture.top tnt_top, texture.bottom tnt_bottom, texture.sides tnt_side +47: name "Bookshelf", texture.y planks, texture.sides bookshelf +48: name "Mossy Cobblestone", texture.all mossy_cobblestone +49: name "Obsidian", texture.all obsidian +50: name "Torch", model models.torch, texture.top torch_top, texture.bottom torch, texture.sides torch +51: name "Fire", model models.fire, texture.all fire +# I know, the model name isn't great, but it's got the same graphical properties +52: name "Mob Spawner", model models.leaves, texture.all mob_spawner +53: name "Wooden Stairs", model models.stairs, texture.all planks +54: name "Chest", texture.y chest_top, texture.sides chest_side, texture.front chest_front +55: name "Redstone Wire", model models.flat, texture.all redstone_wire +56: name "Diamond Ore", texture.all diamond_ore +57: name "Diamond Block", texture.all diamond_block +58: name "Crafting Table", texture.top crafting_table_top, texture.bottom planks, texture.x crafting_table_x, texture.z crafting_table_z +59: name "Crops", model models.crop, texture.all crops +60: name "Soil", model models.soil, texture.all dirt, texture.top soil +61: name "Furnace", texture.y furnace_y, texture.sides furnace_side, texture.front furnace_front +62: name "Lit Furnace", texture.y furnace_y, texture.sides furnace_side, texture.front lit_furnace_front +63: name "Sign Post", model models.sign_post, texture.all planks +64: name "Wooden Door", model models.door, texture.all wooden_door +65: name "Ladder", model models.ladder, texture.all ladder +66: name "Rails", model models.flat, texture.all rails +67: name "Cobblestone Stairs", model models.stairs, texture.all cobblestone +68: name "Sign", model models.sign, texture.all planks +69: name "Lever", model models.lever, texture.all lever +70: name "Stone Pressure Plate", model models.pressure_plate, texture.all stone +71: name "Iron Door", model models.door, texture.all iron_door_bottom_half +72: name "Wooden Pressure Plate", model models.pressure_plate, texture.all planks +73: name "Redstone Ore", texture.all redstone_ore +# when we implement a lighting system, this will have some kind of "emissive" property +74: name "Lit Redstone Ore", texture.all redstone_ore +75: name "Redstone Torch", model models.torch, texture.top redstone_torch_top, texture.bottom redstone_torch, texture.sides redstone_torch +76: name "Redstone Torch (Off)", model models.torch, texture.top off_redstone_torch_top, texture.bottom off_redstone_torch, texture.sides off_redstone_torch +77: name "Stone Button", model models.button, texture.all stone +78: name "Snow", model models.snow, texture.all snow +# ditto as for mob spawners (52) +79: name "Ice", model models.tinted_glass, texture.all ice +80: name "Snow Block", texture.all snow +81: name "Cactus", model models.cactus, texture.top cactus_top, texture.bottom cactus_bottom, texture.sides cactus_side +82: name "Clay", texture.all clay +83: name "Sugar Cane", model models.plant, texture.all sugar_cane +84: name "Jukebox", texture.all jukebox, texture.top jukebox_top diff --git a/community/data/entities.mcpy b/community/data/entities.mcpy new file mode 100644 index 00000000..1f9176db --- /dev/null +++ b/community/data/entities.mcpy @@ -0,0 +1,7 @@ +Player: name "Player", width 0.6, height 1.8, model models.pig, texture pig +Pig: name "Pig", width 0.9, height 0.9, model models.pig, texture pig +Zombie: name "Zombie", width 0.6, height 1.95, model models.zombie, texture zombie +Skeleton: name "Skeleton", width 0.6, height 1.99, model models.skeleton, texture skeleton +Creeper: name "Creeper", width 0.6, height 1.7, model models.creeper, texture creeper +Cow: name "Cow", width 0.9, height 1.3, model models.cow, texture cow +Curry: name "Curry", width 0.9, height 1.8, model models.curry, texture curry diff --git a/community/logs/1718132102.8883429.log b/community/logs/1718132102.8883429.log new file mode 100644 index 00000000..8653b30b --- /dev/null +++ b/community/logs/1718132102.8883429.log @@ -0,0 +1,7 @@ +[LOGS] +[2024-06-12 00:25:03,805] [MainProcess/MainThread/INFO] (main.py/__init__) System Info: Python: CPython 3.11.5 +System: AMD64 Windows 10 10.0.19045 +CPU: Intel64 Family 6 Model 142 Stepping 9, GenuineIntel +Display: Intel(R) HD Graphics 620 +(4, 6) +[2024-06-12 00:25:03,805] [MainProcess/MainThread/INFO] (main.py/__init__) Creating Texture Array diff --git a/community/logs/1722522224.621931.log b/community/logs/1722522224.621931.log new file mode 100644 index 00000000..94cb6e76 --- /dev/null +++ b/community/logs/1722522224.621931.log @@ -0,0 +1,7 @@ +[LOGS] +[2024-08-01 19:53:46,072] [MainProcess/MainThread/INFO] (main.py/__init__) System Info: Python: CPython 3.12.4 +System: AMD64 Windows 10 10.0.19045 +CPU: Intel64 Family 6 Model 142 Stepping 9, GenuineIntel +Display: Intel(R) HD Graphics 620 +(4, 6) +[2024-08-01 19:53:46,074] [MainProcess/MainThread/INFO] (main.py/__init__) Creating Texture Array diff --git a/community/logs/1722522264.0477836.log b/community/logs/1722522264.0477836.log new file mode 100644 index 00000000..5cef90ea --- /dev/null +++ b/community/logs/1722522264.0477836.log @@ -0,0 +1,7 @@ +[LOGS] +[2024-08-01 19:54:25,028] [MainProcess/MainThread/INFO] (main.py/__init__) System Info: Python: CPython 3.12.4 +System: AMD64 Windows 10 10.0.19045 +CPU: Intel64 Family 6 Model 142 Stepping 9, GenuineIntel +Display: Intel(R) HD Graphics 620 +(4, 6) +[2024-08-01 19:54:25,035] [MainProcess/MainThread/INFO] (main.py/__init__) Creating Texture Array diff --git a/community/logs/1722678099.6825862.log b/community/logs/1722678099.6825862.log new file mode 100644 index 00000000..35a0a986 --- /dev/null +++ b/community/logs/1722678099.6825862.log @@ -0,0 +1,7 @@ +[LOGS] +[2024-08-03 15:11:43,187] [MainProcess/MainThread/INFO] (main.py/__init__) System Info: Python: CPython 3.12.4 +System: AMD64 Windows 10 10.0.19045 +CPU: Intel64 Family 6 Model 142 Stepping 9, GenuineIntel +Display: Intel(R) HD Graphics 620 +(4, 6) +[2024-08-03 15:11:43,188] [MainProcess/MainThread/INFO] (main.py/__init__) Creating Texture Array diff --git a/community/shaders/alpha_lighting/frag.glsl b/community/shaders/alpha_lighting/frag.glsl new file mode 100644 index 00000000..c0b1e22a --- /dev/null +++ b/community/shaders/alpha_lighting/frag.glsl @@ -0,0 +1,20 @@ +#version 330 + +out vec4 fragColor; + +uniform sampler2DArray u_TextureArraySampler; + +in vec3 v_Position; +in vec3 v_TexCoords; +in float v_Light; + + +void main(void) { + vec4 textureColor = texture(u_TextureArraySampler, v_TexCoords); + + if (textureColor.a <= 0.5) { // discard if texel's alpha component is 0 (texel is transparent) + discard; + } + + fragColor = textureColor * vec4(v_Light, v_Light, v_Light, 1.0); +} \ No newline at end of file diff --git a/community/shaders/alpha_lighting/vert.glsl b/community/shaders/alpha_lighting/vert.glsl new file mode 100644 index 00000000..3ef39e84 --- /dev/null +++ b/community/shaders/alpha_lighting/vert.glsl @@ -0,0 +1,41 @@ +#version 330 + +#define CHUNK_WIDTH 16 +#define CHUNK_LENGTH 16 + +uniform ivec2 u_ChunkPosition; +uniform mat4 u_MVPMatrix; +uniform float u_Daylight; + +layout(location = 0) in vec3 a_LocalPosition; +layout(location = 1) in float a_TextureFetcher; +layout(location = 2) in float a_Shading; +layout(location = 3) in float a_Light; +layout(location = 4) in float a_Skylight; + +out vec3 v_Position; +out vec3 v_TexCoords; +out float v_Light; + +const vec2 texture_UV[4] = vec2[4]( + vec2(0.0, 1.0), + vec2(0.0, 0.0), + vec2(1.0, 0.0), + vec2(1.0, 1.0) +); + +void main(void) { + v_Position = vec3(u_ChunkPosition.x * CHUNK_WIDTH + a_LocalPosition.x, + a_LocalPosition.y, + u_ChunkPosition.y * CHUNK_LENGTH + a_LocalPosition.z); + v_TexCoords = vec3(texture_UV[int(a_TextureFetcher) & 3], int(a_TextureFetcher) >> 2); + + float blocklightMultiplier = pow(0.8, 15.0 - a_Light); + float skylightMultiplier = pow(0.8, 15.0 - a_Skylight * u_Daylight); + + + + v_Light = max(blocklightMultiplier, skylightMultiplier) * a_Shading; + + gl_Position = u_MVPMatrix * vec4(v_Position, 1.0); +} \ No newline at end of file diff --git a/community/shaders/colored_lighting/frag.glsl b/community/shaders/colored_lighting/frag.glsl new file mode 100644 index 00000000..4268bcf1 --- /dev/null +++ b/community/shaders/colored_lighting/frag.glsl @@ -0,0 +1,21 @@ +#version 330 + +out vec4 fragColor; + +uniform sampler2DArray u_TextureArraySampler; + +in vec3 v_Position; +in vec3 v_TexCoords; +in vec3 v_Light; + + +void main(void) { + vec4 textureColor = texture(u_TextureArraySampler, v_TexCoords); + + if (textureColor.a <= 0.5) { // discard if texel's alpha component is 0 (texel is transparent) + discard; + } + + + fragColor = textureColor * vec4(v_Light, 1.0); +} \ No newline at end of file diff --git a/community/shaders/colored_lighting/vert.glsl b/community/shaders/colored_lighting/vert.glsl new file mode 100644 index 00000000..25a4581d --- /dev/null +++ b/community/shaders/colored_lighting/vert.glsl @@ -0,0 +1,43 @@ +#version 330 + +#define CHUNK_WIDTH 16 +#define CHUNK_LENGTH 16 + +uniform ivec2 u_ChunkPosition; +uniform mat4 u_MVPMatrix; +uniform float u_Daylight; + +layout(location = 0) in vec3 a_LocalPosition; +layout(location = 1) in float a_TextureFetcher; +layout(location = 2) in float a_Shading; +layout(location = 3) in float a_Light; +layout(location = 4) in float a_Skylight; + +out vec3 v_Position; +out vec3 v_TexCoords; +out vec3 v_Light; + +const vec2 texture_UV[4] = vec2[4]( + vec2(0.0, 1.0), + vec2(0.0, 0.0), + vec2(1.0, 0.0), + vec2(1.0, 1.0) +); + +void main(void) { + v_Position = vec3(u_ChunkPosition.x * CHUNK_WIDTH + a_LocalPosition.x, + a_LocalPosition.y, + u_ChunkPosition.y * CHUNK_LENGTH + a_LocalPosition.z); + v_TexCoords = vec3(texture_UV[int(a_TextureFetcher) & 3], int(a_TextureFetcher) >> 2); + + float blocklightMultiplier = pow(0.8, 15.0 - a_Light); + float skylightMultiplier = pow(0.8, 15.0 - a_Skylight); + + v_Light = vec3( + clamp(blocklightMultiplier * 1.5, skylightMultiplier * u_Daylight, 1.0), + clamp(blocklightMultiplier * 1.25, skylightMultiplier * u_Daylight, 1.0), + clamp(skylightMultiplier * (2.0 - pow(u_Daylight, 2)), blocklightMultiplier, 1.0) + ) * a_Shading; + + gl_Position = u_MVPMatrix * vec4(v_Position, 1.0); +} \ No newline at end of file diff --git a/community/shaders/entity/frag.glsl b/community/shaders/entity/frag.glsl new file mode 100644 index 00000000..1c87c427 --- /dev/null +++ b/community/shaders/entity/frag.glsl @@ -0,0 +1,18 @@ +#version 330 + +out vec4 fragment_colour; + +uniform sampler2D texture_sampler; + +in vec3 local_position; +in vec3 interpolated_tex_coords; +in float shading; + +void main(void) { + vec4 texture_colour = texture(texture_sampler, interpolated_tex_coords.xy); + fragment_colour = texture_colour * shading; + + if (texture_colour.a == 0.0) { // discard if texel's alpha component is 0 (texel is transparent) + discard; + } +} diff --git a/community/shaders/entity/vert.glsl b/community/shaders/entity/vert.glsl new file mode 100644 index 00000000..b3339810 --- /dev/null +++ b/community/shaders/entity/vert.glsl @@ -0,0 +1,29 @@ +#version 330 + +layout(location = 0) in vec3 vertex_position; +layout(location = 1) in vec3 normal; +layout(location = 2) in vec3 tex_coords; + +out vec3 local_position; +out vec3 interpolated_tex_coords; +out float shading; + +uniform mat4 inverse_transform_matrix; +uniform mat4 matrix; +uniform float lighting; + +void main(void) { + local_position = vertex_position; + + interpolated_tex_coords = tex_coords; + + vec3 transformed_normal = (vec4(normal, 1.0) * inverse_transform_matrix).xyz; + vec3 sunlight = vec3(0.0, 2.0, 1.0); + + vec3 xz_absolute_normal = vec3(abs(transformed_normal.x), transformed_normal.y, abs(transformed_normal.z)); + float facing = dot(normalize(xz_absolute_normal), normalize(sunlight)); + + shading = max(0.4, (1. + facing) / 2) * lighting; + + gl_Position = matrix * vec4(vertex_position, 1.0); +} From 66b97ae0e91e7a5320a591389ad5fa283d515ca8 Mon Sep 17 00:00:00 2001 From: Rahuldesai <84022777+Rahuldesai0@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:41:47 +0530 Subject: [PATCH 5/8] Create temp --- community/textures/temp | 1 + 1 file changed, 1 insertion(+) create mode 100644 community/textures/temp diff --git a/community/textures/temp b/community/textures/temp new file mode 100644 index 00000000..78981922 --- /dev/null +++ b/community/textures/temp @@ -0,0 +1 @@ +a From e198810bc85082ed1aced125c5ebef1a1d97e517 Mon Sep 17 00:00:00 2001 From: Rahuldesai <84022777+Rahuldesai0@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:44:50 +0530 Subject: [PATCH 6/8] Add files via upload --- community/textures/aqua_cloth.png | Bin 0 -> 1193 bytes community/textures/bedrock.png | Bin 0 -> 833 bytes community/textures/black_cloth.png | Bin 0 -> 1076 bytes community/textures/blue_cloth.png | Bin 0 -> 1179 bytes community/textures/bookshelf.png | Bin 0 -> 1070 bytes community/textures/bricks.png | Bin 0 -> 1173 bytes community/textures/brown_mushroom.png | Bin 0 -> 634 bytes community/textures/cactus_bottom.png | Bin 0 -> 825 bytes community/textures/cactus_side.png | Bin 0 -> 1015 bytes community/textures/cactus_top.png | Bin 0 -> 1041 bytes community/textures/chest_front.png | Bin 0 -> 1079 bytes community/textures/chest_side.png | Bin 0 -> 1025 bytes community/textures/chest_top.png | Bin 0 -> 1035 bytes community/textures/clay.png | Bin 0 -> 1203 bytes community/textures/coal_ore.png | Bin 0 -> 928 bytes community/textures/cobblestone.png | Bin 0 -> 1360 bytes community/textures/cow.png | Bin 0 -> 1948 bytes community/textures/crafting_table_top.png | Bin 0 -> 1256 bytes community/textures/crafting_table_x.png | Bin 0 -> 1171 bytes community/textures/crafting_table_z.png | Bin 0 -> 1205 bytes community/textures/creeper.png | Bin 0 -> 3074 bytes community/textures/crops.png | Bin 0 -> 1167 bytes community/textures/curry.png | Bin 0 -> 702 bytes community/textures/cyan_cloth.png | Bin 0 -> 1289 bytes community/textures/daisy.png | Bin 0 -> 695 bytes community/textures/dead_bush.png | Bin 0 -> 739 bytes community/textures/diamond_block.png | Bin 0 -> 984 bytes community/textures/diamond_ore.png | Bin 0 -> 975 bytes community/textures/dirt.png | Bin 0 -> 1059 bytes community/textures/fire.png | Bin 0 -> 666 bytes community/textures/furnace_front.png | Bin 0 -> 1238 bytes community/textures/furnace_side.png | Bin 0 -> 1190 bytes community/textures/furnace_y.png | Bin 0 -> 1221 bytes community/textures/glass.png | Bin 0 -> 728 bytes community/textures/gold_block.png | Bin 0 -> 1049 bytes community/textures/gold_ore.png | Bin 0 -> 1008 bytes community/textures/grass.png | Bin 0 -> 1349 bytes community/textures/grass_side.png | Bin 0 -> 1152 bytes community/textures/gravel.png | Bin 0 -> 1423 bytes community/textures/green_cloth.png | Bin 0 -> 1071 bytes community/textures/grey_cloth.png | Bin 0 -> 1055 bytes community/textures/ice.png | Bin 0 -> 676 bytes community/textures/indigo_cloth.png | Bin 0 -> 1112 bytes community/textures/iron_block.png | Bin 0 -> 863 bytes community/textures/iron_door.png | Bin 0 -> 1022 bytes community/textures/iron_door_bottom_half.png | Bin 0 -> 1011 bytes community/textures/iron_ore.png | Bin 0 -> 1007 bytes community/textures/jukebox.png | Bin 0 -> 1191 bytes community/textures/jukebox_top.png | Bin 0 -> 1031 bytes community/textures/ladder.png | Bin 0 -> 996 bytes community/textures/lava.png | Bin 0 -> 787 bytes community/textures/leaves.png | Bin 0 -> 1269 bytes community/textures/lever.png | Bin 0 -> 1360 bytes community/textures/lime_cloth.png | Bin 0 -> 1221 bytes community/textures/lit_furnace_front.png | Bin 0 -> 1260 bytes community/textures/log_side.png | Bin 0 -> 1244 bytes community/textures/log_top.png | Bin 0 -> 1086 bytes community/textures/log_y.png | Bin 0 -> 1085 bytes community/textures/magenta_cloth.png | Bin 0 -> 1257 bytes community/textures/mob_spawner.png | Bin 0 -> 962 bytes community/textures/mossy_cobblestone.png | Bin 0 -> 1401 bytes community/textures/obsidian.png | Bin 0 -> 1183 bytes community/textures/off_redstone_torch.png | Bin 0 -> 659 bytes community/textures/off_redstone_torch_top.png | Bin 0 -> 588 bytes community/textures/orange_cloth.png | Bin 0 -> 1181 bytes community/textures/pig.png | Bin 0 -> 1391 bytes community/textures/pink_cloth.png | Bin 0 -> 1294 bytes community/textures/planks.png | Bin 0 -> 247 bytes community/textures/purple_cloth.png | Bin 0 -> 1248 bytes community/textures/rails.png | Bin 0 -> 869 bytes community/textures/red_cloth.png | Bin 0 -> 1189 bytes community/textures/red_mushroom.png | Bin 0 -> 702 bytes community/textures/red_rose.png | Bin 0 -> 702 bytes community/textures/redstone_ore.png | Bin 0 -> 946 bytes community/textures/redstone_torch.png | Bin 0 -> 670 bytes community/textures/redstone_torch_top.png | Bin 0 -> 604 bytes community/textures/redstone_wire.png | Bin 0 -> 627 bytes community/textures/rose.png | Bin 0 -> 702 bytes community/textures/sand.png | Bin 0 -> 1333 bytes community/textures/sapling.png | Bin 0 -> 989 bytes community/textures/skeleton.png | Bin 0 -> 1183 bytes community/textures/slab_side.png | Bin 0 -> 896 bytes community/textures/slab_y.png | Bin 0 -> 881 bytes community/textures/snow.png | Bin 0 -> 770 bytes community/textures/snowy_grass_side.png | Bin 0 -> 1036 bytes community/textures/soil.png | Bin 0 -> 1170 bytes community/textures/sponge.png | Bin 0 -> 1316 bytes community/textures/stone.png | Bin 0 -> 841 bytes community/textures/sugar_cane.png | Bin 0 -> 792 bytes community/textures/tnt_bottom.png | Bin 0 -> 629 bytes community/textures/tnt_side.png | Bin 0 -> 772 bytes community/textures/tnt_top.png | Bin 0 -> 923 bytes community/textures/torch.png | Bin 0 -> 660 bytes community/textures/torch_top.png | Bin 0 -> 589 bytes community/textures/unknown.png | Bin 0 -> 5519 bytes community/textures/violet_cloth.png | Bin 0 -> 1264 bytes community/textures/water.png | Bin 0 -> 760 bytes community/textures/white_cloth.png | Bin 0 -> 1273 bytes community/textures/wooden_door.png | Bin 0 -> 1132 bytes community/textures/yellow_cloth.png | Bin 0 -> 1280 bytes 100 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 community/textures/aqua_cloth.png create mode 100644 community/textures/bedrock.png create mode 100644 community/textures/black_cloth.png create mode 100644 community/textures/blue_cloth.png create mode 100644 community/textures/bookshelf.png create mode 100644 community/textures/bricks.png create mode 100644 community/textures/brown_mushroom.png create mode 100644 community/textures/cactus_bottom.png create mode 100644 community/textures/cactus_side.png create mode 100644 community/textures/cactus_top.png create mode 100644 community/textures/chest_front.png create mode 100644 community/textures/chest_side.png create mode 100644 community/textures/chest_top.png create mode 100644 community/textures/clay.png create mode 100644 community/textures/coal_ore.png create mode 100644 community/textures/cobblestone.png create mode 100644 community/textures/cow.png create mode 100644 community/textures/crafting_table_top.png create mode 100644 community/textures/crafting_table_x.png create mode 100644 community/textures/crafting_table_z.png create mode 100644 community/textures/creeper.png create mode 100644 community/textures/crops.png create mode 100644 community/textures/curry.png create mode 100644 community/textures/cyan_cloth.png create mode 100644 community/textures/daisy.png create mode 100644 community/textures/dead_bush.png create mode 100644 community/textures/diamond_block.png create mode 100644 community/textures/diamond_ore.png create mode 100644 community/textures/dirt.png create mode 100644 community/textures/fire.png create mode 100644 community/textures/furnace_front.png create mode 100644 community/textures/furnace_side.png create mode 100644 community/textures/furnace_y.png create mode 100644 community/textures/glass.png create mode 100644 community/textures/gold_block.png create mode 100644 community/textures/gold_ore.png create mode 100644 community/textures/grass.png create mode 100644 community/textures/grass_side.png create mode 100644 community/textures/gravel.png create mode 100644 community/textures/green_cloth.png create mode 100644 community/textures/grey_cloth.png create mode 100644 community/textures/ice.png create mode 100644 community/textures/indigo_cloth.png create mode 100644 community/textures/iron_block.png create mode 100644 community/textures/iron_door.png create mode 100644 community/textures/iron_door_bottom_half.png create mode 100644 community/textures/iron_ore.png create mode 100644 community/textures/jukebox.png create mode 100644 community/textures/jukebox_top.png create mode 100644 community/textures/ladder.png create mode 100644 community/textures/lava.png create mode 100644 community/textures/leaves.png create mode 100644 community/textures/lever.png create mode 100644 community/textures/lime_cloth.png create mode 100644 community/textures/lit_furnace_front.png create mode 100644 community/textures/log_side.png create mode 100644 community/textures/log_top.png create mode 100644 community/textures/log_y.png create mode 100644 community/textures/magenta_cloth.png create mode 100644 community/textures/mob_spawner.png create mode 100644 community/textures/mossy_cobblestone.png create mode 100644 community/textures/obsidian.png create mode 100644 community/textures/off_redstone_torch.png create mode 100644 community/textures/off_redstone_torch_top.png create mode 100644 community/textures/orange_cloth.png create mode 100644 community/textures/pig.png create mode 100644 community/textures/pink_cloth.png create mode 100644 community/textures/planks.png create mode 100644 community/textures/purple_cloth.png create mode 100644 community/textures/rails.png create mode 100644 community/textures/red_cloth.png create mode 100644 community/textures/red_mushroom.png create mode 100644 community/textures/red_rose.png create mode 100644 community/textures/redstone_ore.png create mode 100644 community/textures/redstone_torch.png create mode 100644 community/textures/redstone_torch_top.png create mode 100644 community/textures/redstone_wire.png create mode 100644 community/textures/rose.png create mode 100644 community/textures/sand.png create mode 100644 community/textures/sapling.png create mode 100644 community/textures/skeleton.png create mode 100644 community/textures/slab_side.png create mode 100644 community/textures/slab_y.png create mode 100644 community/textures/snow.png create mode 100644 community/textures/snowy_grass_side.png create mode 100644 community/textures/soil.png create mode 100644 community/textures/sponge.png create mode 100644 community/textures/stone.png create mode 100644 community/textures/sugar_cane.png create mode 100644 community/textures/tnt_bottom.png create mode 100644 community/textures/tnt_side.png create mode 100644 community/textures/tnt_top.png create mode 100644 community/textures/torch.png create mode 100644 community/textures/torch_top.png create mode 100644 community/textures/unknown.png create mode 100644 community/textures/violet_cloth.png create mode 100644 community/textures/water.png create mode 100644 community/textures/white_cloth.png create mode 100644 community/textures/wooden_door.png create mode 100644 community/textures/yellow_cloth.png diff --git a/community/textures/aqua_cloth.png b/community/textures/aqua_cloth.png new file mode 100644 index 0000000000000000000000000000000000000000..d24b7d5bb9c32347f76b4060a9bd34984deea528 GIT binary patch literal 1193 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 literal 0 HcmV?d00001 diff --git a/community/textures/bookshelf.png b/community/textures/bookshelf.png new file mode 100644 index 0000000000000000000000000000000000000000..1fd85b5e0244d2d6ff03e4b63a9d69dc37b00955 GIT binary patch literal 1070 zcmV+}1kwA6P)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMhFV0oRiU0rr8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0tZP%K~y-)eUm?E6LA#BKl$Z%?KQC$u|=x{-E2S+?P9Zt zpwNi8lsbq=Tk2lzREmRxB2I#X|Ar3MNfZT9!5|JIE*6w4Z6gltHABc%C25jhyvx-g zxl7U{ey4Zu`+kr2d%w>G5)US}s7fh?uIt_>rj_wyBWV$jMX8r*Wsm?p3Wd&HYZJzc^KlgoX1p8--Yboya zml2WPzLp0MpZUUp!3Es1+qQY6w~xT|<)JNrLg8;yK`7MW$J>3+lkr%z;k~`iN+|#` zo4Fg%OxWw`z5Q_B%GDg4;uEX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMh0*i{9{{R308FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0&Yn}K~y-)Ws})zQ&AL#zdf8GCuy6cO|?=gguX$GmqM%% z3W}&z(C6{WR}g#vsVE3SDHeL=g#&mef@m!r(jiGRoSd9tA1^YH(*JU;{jbgX_P@oe zr)z01jL6s)g|&w?KD|QJh$zuBhz;5lbon|PMSk75AyUZV|w7sf2+ zvRFBfFZ(rGLCDWqol-7Cm^7Gj97g(e+9XL+Bp?CuuFXNKOArK{bbOQ$OuIHYTLWM# zO+QWmIBIvvdoBPo83(<*{)p716;m{Z+mA(5IUG!Y`8f}*HIsP>})ct^>=aRI0%mIEB zv)5>khh7AIX50afc}oo#9JV^tdjYK=r0BWST3wVB*jkfwHLV~d@419YJT?O)ae{dL z@4h|f&y7ZF-B?U?jdYyiZXALrp5GMw$BvMFj+<%5Pso_t(eT8z} z4_E*kt@!-+=u%GtQc8;b{vZc+KVZaS4AgV6tU+zkY-`D69<^Gnu(BeEl8EcJ4aR_! nU<^VDtXpf8jk)qKMnU=yr1ub7$_|*j00000NkvXXu0mjf;IIRe literal 0 HcmV?d00001 diff --git a/community/textures/brown_mushroom.png b/community/textures/brown_mushroom.png new file mode 100644 index 0000000000000000000000000000000000000000..fc2245cc85469aff9cc8e807f37ced62f8d5c4fb GIT binary patch literal 634 zcmV-=0)_pFP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ*I$b6uN&o-=8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b08>dsK~y-)V_+BsqhK%qMqCnSW>)-%v5#K4%aA{LH6zgm zz%(Ddau+W4@Z~#(zEyiM)U#kS09hkUGcLe_O9G!JqCrM<(0@+{tN-}aFi~m=014+D U$?nUE7ytkO07*qoM6N<$f)KU?;{X5v literal 0 HcmV?d00001 diff --git a/community/textures/cactus_bottom.png b/community/textures/cactus_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..ca2984b4e6666762cdcc407e97661b845d668cc8 GIT binary patch literal 825 zcmV-91IGM`P)EX>4Tx04R}tkv&MmKpe$iQ>8^J3U(;skfG{gK~%(1t5Adrp;l;o12rOiK+~&c zDiIem*;O&{3IRd%V-yjYS;m|sCE+=~?&0I>U5saWpZjz4syT}RK9P8q8D^DugLrzg zYH;2s4zr@H5}y-~nRG$oN3JU_zi}=&Ebz>*nNH0Uhl#~P2P+-Sil#<9MI2Q%o$`f@ z%PQwB&RV&~TKD8H4CVBdWvu?YAB(MDq^(iq*zGNe%!-9==ddaDdZ}F zkz)ZBXpkL0_#gc4*2+&#xJjWn(EVcDAHzUk7iiXP`}^3oneSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{009w6L_t(I%e9kBQUfs%L!WvkAxXiWb8sWhk#)|&jW`E; z2#^$RvG9B|6bn*#<8oV;EVT_+4guUf-uo|yU!Pvo_KWBJ0UM+_Xj+p3Nn{ot4toFw z0x9@78%Y>&CW=_7hG5fUGdhlG9GOW-lq{r8$pSFU z`XPsQ;&ujkKSQV?Z6MgLk|b&4Wi|MQuy{mpy>`&f2O)U~4500000NkvXXu0mjf Dw9sI1 literal 0 HcmV?d00001 diff --git a/community/textures/cactus_side.png b/community/textures/cactus_side.png new file mode 100644 index 0000000000000000000000000000000000000000..b59d492f52510a55d6de2acf768ee20aa55bb975 GIT binary patch literal 1015 zcmVEX>4Tx04R}tkv&MmKpe$iQ>8^J3U(;skfG{gK~%(1t5Adrp;l;o12rOiK+~&c zDiIem*;O&{3IRd%V-yjYS;m|sCE+=~?&0I>U5saWpZjz4syT}RK9P8q8D^DugLrzg zYH;2s4zr@H5}y-~nRG$oN3JU_zi}=&Ebz>*nNH0Uhl#~P2P+-Sil#<9MI2Q%o$`f@ z%PQwB&RV&~TKD8H4CVBdWvu?YAB(MDq^(iq*zGNe%!-9==ddaDdZ}F zkz)ZBXpkL0_#gc4*2+&#xJjWn(EVcDAHzUk7iiXP`}^3oneSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00GZQL_t(I%WacOjuSx)hCjRdmFF}8#DK&;S6~5)xd|uB zo`wlZDa1P20-(Kze52#u6Nk40N%h! zOw1FCH|5}QIC}v6ms4BZ6p&=$@pc%Yx&2$K~s(Q=oZ*zD}9FzXpgSq^}C( zN)Z)woW^;lQAx5aaEk<_Zy-SjBgDAxrP{d_7mMpW&K_z{ID70-v5tX^lyC|l0kira zSduAWAHVzCYRF)8Q7HUKQ98Bqappz6)0Rt6B zwW;{?;b+faP|_3?hkKTFG6BRCX*MG>H(+4L^$!27g4+5*4Y0>X0`R}j=)$$ddnb|` zI!Qr7v}~q5#8RpEzO#6GJ?gQwW^q?Ju1pEd;e>c?F}KLOwNe@W$N4`_Y(R=>T-Ece lKPCy(dymzIRRPBRKMy){(v%YtWy1gf002ovPDHLkV1meez+eCX literal 0 HcmV?d00001 diff --git a/community/textures/cactus_top.png b/community/textures/cactus_top.png new file mode 100644 index 0000000000000000000000000000000000000000..f03df7f0ca00da2b5836bcd9678878c8c0e6bef0 GIT binary patch literal 1041 zcmV+s1n&EZP)EX>4Tx04R}tkv&MmKpe$iQ>8^J3U(;skfG{gK~%(1t5Adrp;l;o12rOiK+~&c zDiIem*;O&{3IRd%V-yjYS;m|sCE+=~?&0I>U5saWpZjz4syT}RK9P8q8D^DugLrzg zYH;2s4zr@H5}y-~nRG$oN3JU_zi}=&Ebz>*nNH0Uhl#~P2P+-Sil#<9MI2Q%o$`f@ z%PQwB&RV&~TKD8H4CVBdWvu?YAB(MDq^(iq*zGNe%!-9==ddaDdZ}F zkz)ZBXpkL0_#gc4*2+&#xJjWn(EVcDAHzUk7iiXP`}^3oneSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00HSqL_t(I%cYaQZWBQe#(%qe>;JYaK_u%G6e&uP0?|;V z;tlAaqj2e$;5A(O0o?HtK~zyF;sP02iVjC{;rQbC{_NgTTy7H!x=c4av){}&^9{Vv z1VDEZk^}11+$N%=>1Z5>J*w0yNM1{_|!Wk#EM?+q=k^mQ}6)EkGPcdah={MB)i;V?^2`^*j46r zu=~Cyz1a8y{uZ{=73t4=e<<7Oitcd0-M2rOS%T~Y{{8tuz1aQ&=nx8-Qsx(i00000 LNkvXXu0mjfbNJkc literal 0 HcmV?d00001 diff --git a/community/textures/chest_front.png b/community/textures/chest_front.png new file mode 100644 index 0000000000000000000000000000000000000000..5bb4289d0802fbb3103f029cc766945d017b4f7b GIT binary patch literal 1079 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 FV1n+_(V+kU literal 0 HcmV?d00001 diff --git a/community/textures/clay.png b/community/textures/clay.png new file mode 100644 index 0000000000000000000000000000000000000000..3670a86755e585cbc5f3d9a9f6e35c76dc2b884f GIT binary patch literal 1203 zcmV;k1WfyhP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ+5^;#U@c;k-8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0*pySK~y-)CDXfd+%_0M;e#Il!RyM>T8d|rNNMw$snX}| zTso0QW9!Z(2!gnzPWx*K3vc7Y5 z^Cy0rK^GE{eNTkl^Xbzi)>z)=XL5}==P0F+b4J1zpjb*$ygq$p^?{rcC1v)q0&qUh zSlx0u{Xx?-bZ$h6qHibUFdaxGFpeX&RHnnowrw=7;dpgK8%^FJ#D&MF?6V`O7Vz9;%;+eDVx4in R@D%_6002ovPDHLkV1f=1CaVAd literal 0 HcmV?d00001 diff --git a/community/textures/coal_ore.png b/community/textures/coal_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..c60f980d40caed86794bc7d64758dc5f92a5d125 GIT binary patch literal 928 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 literal 0 HcmV?d00001 diff --git a/community/textures/crafting_table_z.png b/community/textures/crafting_table_z.png new file mode 100644 index 0000000000000000000000000000000000000000..31de683d4617c4c064c1af45005a6ba6003b4879 GIT binary patch literal 1205 zcmV;m1WNmfP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMk4~R??2LJ#78FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0**;UK~y-)Rgzsu6j2z4pWRj+#~CY~p%S++!X+?M38C^L zF~XlNg1ssV47`diObQBus35x#BZ%m-AP5to2ve#HlUz#*{Mpc56^bp}oGGeVr(L%h zyBK!X{jSc(Ip;a=`<>UbO_A1abT+cSdhbur9o)yG;VCTJ=45Lvmj>Q*>wH_zxl@-P z;|1_5Dyk$Cj_RnAO!wI)y86bkY#V^CzHz$R>q#b)#B_~hGU-CRnT3`xsH#+W_jVR7 zVbI&z%#4}l<6n!r7mwjrQ~<(J9YGLWfDd5c)f51q8>*oQmVy0bnJGO2l5C{;7L;#pxSjt*xIk21H;k^JHJ$(&P%%{Gl zjFMuJl46m@x(eDF0-QUs--TE2D$4?5x<<+$bR~N6p-M9Lnoa6o8ZBXGrB5(^yyGT96Bb>ashDRb^|?k9xyfkEepu_kIygC($Pdr*PLH@J%=DVImlF{=%KZ>m65*f%zgUd z0AjjEII2^tIw~?j5{e2a@a3UOvTG~9yp)b$ZEln^7b4*=q&I7BpD95Qi0K-tBqIm{ z$B#Js&qo*VdA%NnLbCuAiZTk!oVwDwd+TAzJC1T$V{97DFUayD$@yH1` T5WR2T00000NkvXXu0mjf^IaC@ literal 0 HcmV?d00001 diff --git a/community/textures/creeper.png b/community/textures/creeper.png new file mode 100644 index 0000000000000000000000000000000000000000..25015dff8df844511af9bf12c85e343238cff21b GIT binary patch literal 3074 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 literal 0 HcmV?d00001 diff --git a/community/textures/daisy.png b/community/textures/daisy.png new file mode 100644 index 0000000000000000000000000000000000000000..36d7c49ac4d5db9afc69641e308425d47e434179 GIT binary patch literal 695 zcmV;o0!aOdP)EX>4Tx04R}tkv&MmKpe$iQ>7{u2RjsT2vVIah>AFB6^c+H)C#RSm|XfHG-*gu zTpR`0f`cE6RRL;k>@Q#C4j3NMZqtkRU=q6&onSMx0ii6botEPx$x;T)#vvg#t9I72Cnp$zfuRLKS{5( zwAc~Qw+&oew=`uBxZDAvPljyDt`wvx6bium8GTa@=)VPeR=wVu`#607GSpS-1~@nb zMv9cZ=JW2Z_TK(I)9mjDK>u=+__5Q400006VoOIv00000008+zyMF)x010qNS#tmY z4zmCN4zmH{a@eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{0056kL_t(I%VS^|1)~55ICGil|Hq$9{}~t<7(V`F`oC=t zBb<*8n6L?&=>B88eG6g`0|NuYjqCpz_}Tw45^cc8pG^N%)fgCFz5LHGch*0+t4Q{W zSUbaiv33T$8kqc3=9kmALcR;9|j-hGBCn4;?s=R d3-~l40|11sHPAfn;q?Fj002ovPDHLkV1fekAe{gJ literal 0 HcmV?d00001 diff --git a/community/textures/dead_bush.png b/community/textures/dead_bush.png new file mode 100644 index 0000000000000000000000000000000000000000..ca793d4b0d0b2b96ecf57f1939630e9957c28763 GIT binary patch literal 739 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 literal 0 HcmV?d00001 diff --git a/community/textures/dirt.png b/community/textures/dirt.png new file mode 100644 index 0000000000000000000000000000000000000000..58d3fac4f98118350a63952cebf8885dbb3aaef6 GIT binary patch literal 1059 zcmV+;1l;?HP)EX>4Tx04R}tkv&MmKpe$iQ>7{u2RjsT2vVIah>AFB6^c+H)C#RSm|XfHG-*gu zTpR`0f`cE6RRL;k>@Q#C4j3NMZqtkRU=q6&onSMx0ii6botEPx$x;T)#vvg#t9I72Cnp$zfuRLKS{5( zwAc~Qw+&oew=`uBxZDAvPljyDt`wvx6bium8GTa@=)VPeR=wVu`#607GSpS-1~@nb zMv9cZ=JW2Z_TK(I)9mjDK>u=+__5Q400006VoOIv00000008+zyMF)x010qNS#tmY z4zmCN4zmH{a@Al{?7ma02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00H|+L_t(I%VmX=uU2 zSRo)nK?b{c+oAu4w_f%adD=mk)SEEc9y~2=AdELbO=8`&2qhls`;yN0^uEvgyzlqd zqg|Yzm7&N0h|>aq!1uUci;^7IHr4&*ct+rR)STVMu+`XNG?`;GwgFg`B|jeb`26W3 zMq``6_h>%cVsW=r_tQ`?z7}W~=V#^Rc&1PW{VwucMUyK^asbt*ha%&r)gkabT-ziR znQD?!9LoT}u?$?>WYF&_i8??ty&@DDf$uSz%;~lF0Tl9RG6&!b9sr@pRIMJT1yPdY zSO%fUlu?pJ)x7VM4>WC)I4y8(lfd`T1K(3_$7#V%=R`FO`dtS7u9747Qc@@~>VWzU zAiNpTvJB$1;Bq{}u?(UlSDGc5{G@jD{K;@}w}|{h zz%&%-nzm-(ScWpCYMRtueJGhqcC|MzpAG?ZO;b@8w@Xfs57oe&9v|Y`rec}j{)T6- z`FcHF$0!j(k*PRkguCrms$ONcxOz{N-x77Fb3*TCw2{4Q do9bSI{smh*G@tr71Y7_B002ovPDHLkV1hGs+;so| literal 0 HcmV?d00001 diff --git a/community/textures/fire.png b/community/textures/fire.png new file mode 100644 index 0000000000000000000000000000000000000000..ae4a5b91ee10a40d06e3d79ac2b9483513e87d88 GIT binary patch literal 666 zcmV;L0%iS)P)EX>4Tx04R}tkv&MmKpe$iQ>7vm!4?s5$WWauh>AFB6^c+H)C#RSm|XfHG-*gu zTpR`0f`cE6RRL;k>@Q#C4iONMZqtkRU=q6&onSMx0ii6botEPx$x;UB5&wg#t9I72Cnp$zfuRLKS{5( zwAc~QyA51iw=`uBxZD8-o($QPT`5RYC=`JAGy0|+5V-}qSH0ev`#607GSpS-1~@nb zMv9cZ=JW2Z_TK(I)9mjDL(X!P#jJ+&00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNlirueSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{0044HL_t(I%e7KL4!|G?EByb@-3h}8)g?GDhJsK_jQ}w@ zwL!!gC%~?b0DV^!xB;eyt_HOzP}^6>BP=J-JqirPr0#(4-B$h*Wk$8?EnA(07*qoM6N<$g05i~ A{{R30 literal 0 HcmV?d00001 diff --git a/community/textures/furnace_front.png b/community/textures/furnace_front.png new file mode 100644 index 0000000000000000000000000000000000000000..8059c5affd5004fb841a899147e21a1295752d0d GIT binary patch literal 1238 zcmV;{1S$K8P)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMr17Z$_=Kufz8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0W^Y&Myloh6gW08p#dn4h1= zG)<(G{QUgTZnsILQq=2pj83ORv)Lq<%hB)m$z(DVi$${8ERjfrbUMxV_ctpmE97!H zB9RE&+uMxCW0X=@mSv%o;_dB?rKKgb)|{Q4kw_%aTGQ!ta2$ubyE|4_S6N?QXKrqe zbUMxR^D|Z~7GrH~4aaeKe0-$UYEi4z_!|}$7Wn-9B%96Rx-LNwVDx%D-rwJG9EaD} zS8i@@_!p|xD#ypiG#U-Aude~HT-PNMi6DfS7A6u248y=QO_WlYrioz~_`Z*6n&k6& zMxzlI7Z+GkN`fGuUaupi+6eHEQas^O}4u{;|-&3hn2*Z%8tE>Mg5Cj3GQii>I0<|LI{Kqc%DbQ-KNoKVB0o-0LF+-t=+Dpw*UYD07*qoM6N<$f>IYd AG5`Po literal 0 HcmV?d00001 diff --git a/community/textures/furnace_side.png b/community/textures/furnace_side.png new file mode 100644 index 0000000000000000000000000000000000000000..18aaba2664fa82b790f48507395f6f7af40091b3 GIT binary patch literal 1190 zcmV;X1X=ruP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMr4TZL=-~a#s8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0)I(FK~y-)ZIew;>P#4hFZwx%MUkpOvaHny&i{$hv>SFQi|nr ziSPSVDiu7>Lkog{;c!T^*b3&W7nXoO{1SeC_P zGC|X{ZPP9$)5q9MJ3aa2$tLtHpY~X1QE4o6QKr5a0JP41-py#rO9& z#_8!P4-XG?IvsLdUteRICIIvKoZa1Bq?F_j4&dqO3Bxcp1mp3T@p#O?6ow&=<7~&1 z$%Im=#CSX=2!c%k%d&{$cxzfL7L-aQgb-w)bP16AQ3nv0Y>`+ths{jB107*qoM6N<$ EfEX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMqFGS_Rm;g^E_8mlb`NNNLC94Lu8F;OPo zffseI%z+~(PBccuCJ-eQ70XXS`rkd+(X)4QW@lZ(dh+Jl?RJ(V2>@xDk|YUPmXW3@ z0ISuCTCGNsBqT|K@B4&dh_36zaZCZ={QMl(brC`^91bZKi~?fubm!o}Lnh zA!(W-6$%B?G-WUtu(Pwn+1VMLPKO`}*xcMC3`6SmIu8#I*tX63`a0!u8N)CLf`Edm zsx+HTWLai5o3UE0s8lL=o=3mmN7FP+)8ydbfGo@C^?F26gb;!#ijX|d!*LvBSw@y+ zK0iN^B_MN!D*asc?gk8Rsbr&IR!_UQNf zEEWsOJt0XFaU7%TI_l z8jXnKm?(+>D3{9&heN_JB#vVylL-L#_xC@H(l=wNR01Ff0`mDh@9*!dRx5-M0NA#T zs;cbo?*sfW7QPuB$KlT{77I2uHt6+w_`XlO-NyHQ#^W)?Vv(z>tKTPnGj45dVObVI z5Fmu$@$r#fuSd07<>KOk@p#O9K1T>a5CpVZEv~PxDaf*ns;W4SgX_9~#bg);-EJ4p j^Zqj?UDwI|-<*E|lVge5sY;m_00000NkvXXu0mjf+-53? literal 0 HcmV?d00001 diff --git a/community/textures/glass.png b/community/textures/glass.png new file mode 100644 index 0000000000000000000000000000000000000000..64cb447f5cabe6b34eacdb7865576e0adf938513 GIT binary patch literal 728 zcmV;}0w?{6P)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQK9HW1eKiU0rr8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0I^9#K~y-)rBcBS!ypW_PyKa{emX@L=(Je?F+@I59+@FR z{OmpwOMoCD=}Aa7z7yvYEFwxf0C3u$!AByP5CEq&0QNEO%d;*sQTk$9yU^!^MMTZI zx#)olqU$nmE1ZeTTwDl;q6j0nj4%h;Ln&DFASdT+5*LU(lPj3yshAPe?9^K78DEDTm+pi)~NqYrG%ig_@_4de)o(0000< KMNUMnLSTXry*DNR literal 0 HcmV?d00001 diff --git a/community/textures/gold_block.png b/community/textures/gold_block.png new file mode 100644 index 0000000000000000000000000000000000000000..c6c257748db5a193d122fbe97d5bd45d77dbcb77 GIT binary patch literal 1049 zcmV+!1m^pRP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMgBtV=mLjV8(8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0rE*iK~y-)Ws|{<97PaBUu4ycn_VPd5Euywi3?o#1iqQy z@dp4FvV@J-J2Tx~6~Uorxi~LXN@b-YUq|7-0`<)UFCk$1FM^H+ zDdbQ!P&P6*CM)p@b)i@BMM#sX0v9nv0k6P@6#A(F3(=KMfcy>m4(AW>MzsP@NJj`% zB#?w8V1PpH6&;zVk^D)0{&YxKPWNF9m>|*woFO4GM@P}8Cesj$TFwA?45~Gdfq_)) z>`rBEbI>JITJFf!!~Zi$3H5=+8X`R zsEhDzW4~==+v#M1oI&lV_DUXp044_??q?_h4t>6+FN3G^dpew<9u8=yUmyc9iF{{p zn5VL%7fJI*ZYzFX>CiwY2%y}R7|D=%U#F1*`;~dQFt0bVt#}>uvZ;iQHllx-ObDnNiZ~=0JjvJ?&mYlxr8A*I0kY|^B7dSXkJSx< z1U~*kIm8pMD_n1kbt7XUhq({*&)eT}xC(HHk9&*poQR_J#^V^&z0SjUn2hirk=99^ T3#U3Z00000NkvXXu0mjfr{Bx* literal 0 HcmV?d00001 diff --git a/community/textures/gold_ore.png b/community/textures/gold_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..d5221fe3c5a89b4ebc0f4f32b14e8c51bde308b9 GIT binary patch literal 1008 zcmVEX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ&1mQ5uqyPW_8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0m(^3K~y-)g_A#P8$l4oe$*) zX&jtRA0bU3g&G?n47U&yIk<5M$W5Aj16OgEkixwRgSk{zv5>2@g%)Ipq!h}oPk%zD zn_=heoA+iaS(YuFbCg2}fs_(}JkLqf6l*Qp-bL#T>k-E>08&b%l;nAiQVIa)+!CND zihzFHyQcfT832+b!5D)O0)Vr#SIou(-hF(65Q0jUWeX`K*4ofi6a`8tv~F>Gen5ZN z-k|T92LJ$L4F8HGNj7SEo)bCeaLyrw2sE|Uz*qM7zaxa8C<;2APN)G)CKHrWL>}2% z8yaWhJphh&Zs-r&D5aQ<_xSzeh9r5t!l066*}@mL&FO#hZj|Q-mM&=BVm2P|w)cQE zO;=R+tWHmVZUwJwTO=PRC(pS(KM48ZC21Yil<+8p=|lR zX0xf|IA%JXQmt0G_;#Q9d>-;fqd~o1$68Cb`-sQCK5#XCO08C7G#U{pr8dMX=UTUb zmw(+E5IuXy8$NS*xrJVdnm@y#jQ!a}hM~;`-(LuZ`;s<*O7zEH`o8^E6F2 e#9BXR5BvwuH|ULHam)$;0000Ho98? literal 0 HcmV?d00001 diff --git a/community/textures/grass.png b/community/textures/grass.png new file mode 100644 index 0000000000000000000000000000000000000000..89ffa14d525908f4060cc263e101e865a9833485 GIT binary patch literal 1349 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 literal 0 HcmV?d00001 diff --git a/community/textures/grey_cloth.png b/community/textures/grey_cloth.png new file mode 100644 index 0000000000000000000000000000000000000000..4dc157726815c38f7c2fe287fae12bdf16f1138c GIT binary patch literal 1055 zcmV+)1mOFLP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMf7)0Ix2LJ#78FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0r*KoK~y-)Rg+t8>o5#Nk0?r(V;3n}WHsIYcIqIp9Y6HA zAHEivZ;I66%+UP&{1g!(#)ydEy+>7<=NS>fIfsbwd_EBoLI?mX%R_1>3mF~%@W6Cy&}wxpD>){;`9ZCgZyoHGDj*8#Ba z`#}(6B*sVxp$;mgpsIurn5GG9?HhWGk&llLVvMLU25T+zJmbBmX&L|?j|VwtLI_xE zdA(l580q^SRb?24gWxQ9?{UsCO%vO;;k~cu<2VvRz&Ten5D`=r{rvoV6VH2(_nuM; z#u!wU>-AdEzrVi$*tU(75;~3}Ky{&%Le3fI96%K}gn+8DEDHdtdQhA@-|u%+m9}lk zIoC!J!5G7`ENt7x<#HjV#Ow7s2CeH_Q9}p}!+?m;G!3fCx~?=$Q(ZX4?)(05t8H5V za?X@exZQ5V7|A)4bEfM$N-2!vh_x0GA*IAH498k$M9)>8&nEyO1Vn^sngHr5f9wCr zwKj?f*XtE)E%*EV&G++GZns+v)HF?ph&ku#LX44p-w7d*QeqrOx~{9L&+`m`_nxn> zFVs0lDTQTONGa7uV+>8x(Dyz2zQ5UbCNt-Z{{H@=s`W_z9@QD~loHN4RJCeyxm+;D Z@DH|_F1Lcb_Ba3l002ovPDHLkV1m>p*`WXc literal 0 HcmV?d00001 diff --git a/community/textures/ice.png b/community/textures/ice.png new file mode 100644 index 0000000000000000000000000000000000000000..d17fe06e2e760daddafc814f08fe497150bf1826 GIT binary patch literal 676 zcmV;V0$crwP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMg0+Nxcz5oCK8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0DVbBK~y-)rINuBfG`LI@ruyS(u$UlE_`ce+JwGTWFWwV zFWk+sFwEPvQb(cHoW`U(*3uFoO4~|=C~a#F)LA#+&M@BP4b7YY0000< KMNUMnLSTY|f+3Lr literal 0 HcmV?d00001 diff --git a/community/textures/indigo_cloth.png b/community/textures/indigo_cloth.png new file mode 100644 index 0000000000000000000000000000000000000000..59c1ae01f00f9a325bdc1be06281a392d64d8360 GIT binary patch literal 1112 zcmV-e1gHCnP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMfB7)M{wEzGB8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0x?NMK~y-)J(F8*BR3F5Pd&(f$o6P3K#&BphO8s|UxqQr zNV3dsvH8dc1^Q|-Z8*qBqtwP69W&u$I{+{h*4g>k4ot=wAUz7DHol)Ga%;G$(7TXwA(}D;1K^S} z*X`gG2b0h3Ah*Wb9C1_L?>n`2{Nr&@YiA0^6pfGVV9S*`D6=c=+3XaJ$&5?N%&sU9 zgW-R?%wOa#{kV^e=cOf{3u^!d@CLlT%ygo}W3`b3sIy%vdJl z{kmf+EWwDbY)55rWqk_Ww#*cabBLqCX$b(-+G!1beqYJ0QER97&g&BBy>m$!H^pt_ z3mxP zZc1$(5#jIi`W5l(cHmPmdhfig5fdS|MlOw03>0fzw}ZFY32vAPw{19>C+E+%8IL|3 zq(`B)&N>guDq|DRYvfTYX&>VY&*e*dp|pnoy6?CuuS*~wja$mND(mc+48__;Qr-27 e$;<4BIR68*fH6^t$4QF-0000EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMgEKWzKaR2}S8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0XRuSK~y-)rISIf@-Pg9KQ{>yY6}tq4#EA`oC1k+K+}*$ zBz}uuRE^+YJl^aaC-#iTk@NYiAp}GO=N!&CthI;;s>%x@g7+Q~sm^TIb(~Ho0Gg)3 z7*jo-riuUIdc9&(N|aInD5daxKKTvoFbu>P=OR_o+A5x=300l%dhfA)-?Q88D5cEQ zo2IGsKOPSNR;yK2uyD?^#uw>-D$8I(o_WS+3Vaw^Klq$N*7@%$2e-ga+ zU(r`p?Co~@XyeO;7o!;CoGYbZj3I=8-EOxWk4H)=s4B*oszc717~@A5*6TG^RsSX- prNrfOc^jar&I`5tol7Yq!Vk>K$XB>j9oYZ?002ovPDHLkV1l}hf@J^z literal 0 HcmV?d00001 diff --git a/community/textures/iron_door.png b/community/textures/iron_door.png new file mode 100644 index 0000000000000000000000000000000000000000..e00dc8df6130a0dce64873d399bd2bbef16004e3 GIT binary patch literal 1022 zcmVEX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMsEtU1y>i_@%8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0oO@HK~y-)ZIeM#B_R+*9|Z`82k;t(CvatixAGPq!9%#x zg@zY#;X=Qmzv-rdnuP5Z56jeoKR$^{%Z?%+ywU!V9F-DG$j}Z}CYqZu75v;X{ z2*#Lk_WM2V^z;-FK~-7Tl^7$&7+Pzis6$n$wT=d_udg_3E!J96N*H5UmIVM~3?T$^ z&Ib*aW#Q!Hgw`4WE~SKXj#3I&S67A&9v>ey=lmo7@bI8HXG$r^&CShsC+GMd&N)H| zKjJY)y!XTyk@NF&LI{*nek7{u7du8&of6yN2HWcRd&1Gcxfx5G5=)n-lMAIoN+NmoO2jsxVX4D5bOE*SwB8LxV*eP zh(A3&>3+XQM3By<*7~c6TOV|Y2;Ted6QQ5qMBI+PZO~eyl!CdtyVFh~#(1E*F@|}b zi7^iKbI#OSnWpL6iCqI#9XqeJVy>`fZlKR`1(cmId!U-g{j4_t)1K^E@9=vDT7v zW}au(b)}Sos^YyL6kQ*6``fIwBeAc!Qxg&1-`@u%`}X#BeRg)nvMi`7DJ7<9VwxsW sO6+z!N-3=CN^1@09L_mDKR*HZ0~{1Adb5oI7ytkO07*qoM6N<$g0|ww-T(jq literal 0 HcmV?d00001 diff --git a/community/textures/iron_door_bottom_half.png b/community/textures/iron_door_bottom_half.png new file mode 100644 index 0000000000000000000000000000000000000000..283d896591d54e5982fcea76f2ae3892bcb8162e GIT binary patch literal 1011 zcmVEX>4Tx04R}tkv&MmP!xqvQ>7vmL5qkuWT@g`K~%(1t5Adrp;l*{h@IUxHTPr^??j?oeK>Lg1d<+4hU7%idobO}DshQiya5gl zf#CvWulc;Yqjhfo-f7J52YnB6t3iyFQvd(}24YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2jvGA5*Gm=DL32z000?uMObu0Z*6U5Zgc=ca%Ew3 zWn>_CX>@2HM@dakSAh-}0005XNkl8T zmdDEsKMg+kfp#Af2Sj&KRb803x3~WK`btWP%jJSG1`z>ZSr)#&zF3xp-aD-|dhaaD z!tHir+cwO{$48Gb(tAfl2q6H>;*=60gn7<6(|aez$hK`bV+_Wa`9h2l0Ambe{rvo( zs;DaGdE&jNwT7zVVvHQeK`CVdjqRKx#z-jzRh_`CHGn^W5CW=7@0}0=z4uvUj3MXD z<#M6-PALWNJ?pv>W5hX!tF@x4T}7-Oil z(puv<4n$;{`u+VqCEZKh_Z_$I`y9_`nDqWl;okKS0@hkY1m_&`{{B8`d+#3#y!UfD zAq1YDp0L)kuItQ=dwF@8vu>@?TBFuF+5Df6k;wBrNh#r;pPy%wh)nI)+PR%`voVB# zF@|MX{&FxPDED|;{zNI|55PHxF^1zfrip{Hh;W|g%*VJJKyKT%`B{d> h@udgISoini{0p2@qwX8Vosa+k002ovPDHLkV1gH1&F}yK literal 0 HcmV?d00001 diff --git a/community/textures/iron_ore.png b/community/textures/iron_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..001beee9108a7dc0353afa34078ab2ce4ef3afd9 GIT binary patch literal 1007 zcmVEX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ%IM+mhVgLXD8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0mw;2K~y-)eUq_j8$l3;KVc!x*^6=k!Gc$iH0C1QD7C6o zaT`*pP97j{aCs0tLi(gPs$&RPtW!7#cfuzST9aEvg)OB}c6~aDOgGESzyJLIOe0B> zjkT6)2qB1~2mq}$aU5fe;ZR+(-cXM)3;~Fuh$xECS|gni{TCr4b~ zfs~SKeZ_D4XNQT_nnsc&8~0GR$wgU~-i_+~z*d7{ze6^g^W}R<9LGDVJ62zR-5&&R z99kq79|td(++;ogg+`aN`?eyzNK5Uhi`lhOAaA zTCEn7Tg!UA_IbD4rQL30jN#p@ko(1y)p3U)2uRbErj&9|ylOt|cX;w#vRpLDW^c! dqJGW}_%BPP`}G-s93ub#002ovPDHLkV1g=Uyl?;j literal 0 HcmV?d00001 diff --git a/community/textures/jukebox.png b/community/textures/jukebox.png new file mode 100644 index 0000000000000000000000000000000000000000..4f9dfca9e8d2b6cd8901297163e13a0097214654 GIT binary patch literal 1191 zcmV;Y1X%ltP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMu5pLU?vj6}98FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0)R(SI(=xUVfH4N8b-MrC2EmX_X|}+#)kTVyK};h|HYw&$M*m!Jas~X!2q#xSYQgI- zmsm-_=HTQ9I;%K1`GH|XyVGacnWgIntlgTY>jvD&TeL5`EII|8T=FVQYr|NMky3Hf z&N3Rs+_bZ}gCSxX(eZquFreKVpe8ZhFhUN7#8P4-uq;au>M1*wJM0}_uwA}O-xN?~Pen}yOGjdPFZPgeNY?6AAF!Mmd~o>rFF|J-Ez;cY$~owB>NLGv=;RqZhg zr8zRTjb)T3mNLcI?hTNGA?@Da8YfrSui~+k7^Sg{!Tg(x z_uqe}*st<3#UcumaNvdkZQtXx*Qf1!^rt%IqV0RM`~Yt}#2pL)IPLXu!yx&_jBVrO z3LKyHsaMx&UIx6ZuBX@!PdYrUEOC6+=lSLuZ$CAuSJ!cJg+#SRY1A}M|NRQ%|8&vy zC2A6*raIAqur2b%Ji9v;8s{GMTA4TB&ZyVQsV@HXFRH6Fnl19he4+zm3~m?@g#q1A z0uU*Y>fp9BpX#75qeKVc2saEc#vnEyZJ1}Pi%h379h!yG8~|<@Tw6Q20@-Zl_pmAU zzjhE0?k}5CAt6KnS|r^qW6(k%j7bX{AyC?2TS<;KnqLT-jKYZ2-L(J!002ovPDHLk FV1fXeBQO8} literal 0 HcmV?d00001 diff --git a/community/textures/jukebox_top.png b/community/textures/jukebox_top.png new file mode 100644 index 0000000000000000000000000000000000000000..ceb81f2c8168b43d24e6098eb2f87cb3bbfa4191 GIT binary patch literal 1031 zcmV+i1o-=jP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMu8;%ZgtpET38FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0pLkQK~y-)b&@-78!-@uKQ6gXNf0a>K~w}V^3EC3<`_9% z4v`Dw3@K7LP2fgWuzJwqa>;SQ)y9f!RwQQTpP7%p`t9- zE_yNnLP}ZA7hu;X znjGgGWqBNRe2QD0T6slK2SQNYAT9>K>^&h>obA7;Kxan@2Hw8`9MTi z?Y7KfPBER043>ifkG4K?7=2(pB7#v$k>?FJ){fw=2BG797htv9GB0cLJpD!<14?aB zAKzTdw64>hKvXI@UWBL=N@Nrhr3g{bS;~nLc>tPo-aUKZ`>p^0002ovPDHLkV1imZ B(EI=Z literal 0 HcmV?d00001 diff --git a/community/textures/ladder.png b/community/textures/ladder.png new file mode 100644 index 0000000000000000000000000000000000000000..3f0a787730fbac4f294c9c3d630c73404f191c52 GIT binary patch literal 996 zcmVEX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMs1lLDEhX4Qo8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0li5?K~y-)jgwDn6G0eCXC#OBbZ zEvQA}T7;5bn`1AY{Q^1m`K$A?hI;OrZzrPg-#at!!!z)Ay?MPRik2w|S^K+N;#J|H%qaln(uM#izda|vHVZ%^Ist&L>$17i z>EO86eEM?5F*js!^%cgHPMeo5EVU z7dpar-W1QW(=rzs6xqyO;*)w(F+BfGF92NMqg>h$0S}%$n#0hp zIQVcrmchV_e(sj^Kr#TtcgN-U?At#X46~99tXzuuWbD5@P}RtI544Dec|Xd`R6=@i zvra@OaNO(h9;6pyR4Ed+YFZ=;C+{u}T S&*K{a0000EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ(6~w`MkpKVy8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0PIObK~y-)b(75v!ypWWzed@IJ-PsgOvj-I7U&invJVnH z1jj!#mMkF*_IuCvtHDTx%f3K`6SX9Ve8s@W>6y{{^vvj7-q7>?Cd3uf;C4oy) z6hXsRYY}Z>?ASiPRkT!tm{z#&bP>@(%mJzqc0r3E$f3fVhkFW-FqI`D2pzC(S`Zrk z+Q$CS>!*?Kk-{;>Vx7Dc>3wwR0QS==UIX`R65AwZE4Mh}$%uGXzvl5Xzz;=`M~mmA Rt1SQk002ovPDHLkV1m+|RCoXY literal 0 HcmV?d00001 diff --git a/community/textures/leaves.png b/community/textures/leaves.png new file mode 100644 index 0000000000000000000000000000000000000000..858664e11ad1091dc240cad4703f466e8c862f26 GIT binary patch literal 1269 zcmVEX>4Tx04R}tkv&MmKpe$iQ>7{u2RjsT2vVIah>AFB6^c+H)C#RSm|XfHG-*gu zTpR`0f`cE6RRL;k>@Q#C4j3NMZqtkRU=q6&onSMx0ii6botEPx$x;T)#vvg#t9I72Cnp$zfuRLKS{5( zwAc~Qw+&oew=`uBxZDAvPljyDt`wvx6bium8GTa@=)VPeR=wVu`#607GSpS-1~@nb zMv9cZ=JW2Z_TK(I)9mjDK>u=+__5Q400006VoOIv00000008+zyMF)x010qNS#tmY z4zmCN4zmH{a@eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00PZPL_t(I%Vm>IZxdG(hMzm0phn4Piu{QZlSFbFiui~V zLYnL(kn2=WR6HpgOEPz4^X@eArg8B#g3rf@-3#zJussd2~YMMfdVPU{zoH+K_ z9yiP+_F-XpLY2F^=jy)ieb3QzIWXHV0ArOw`8eAvUEg&HZ>{9b*#ByPj*A@vkSZlb zvuzsyv)yD<(I7LCQClXq_@c!>0tC+l1>m?lA}732@jMTJyWd;ut{>jpCIG#sdS$#i zB>SyK{n5*W9I^W)F`bYvSB7QZ!<_=~#eaJxRZ5E1H27`ryaGu7kXH429p~990ES_( zmJMLrHuZX)m6a6$YPA}xFEuoPPZs)Q->dih*!prCi`N4HcrO%{N`?G%Uj5Yer_!{> zo8`2NZQBh4(=;ikT>wI7Lt7OaO*YM=?#4+aQKv zPvVnJ1otWX)Cw+Lj-u85i<8J zn&N{~J2>+1usDu`mbqs!JF^79U)L9LU6=W*^C}Ps@avvOs^emZ+)VzhbY1r$Dpra( zjze}bt4K^IHjvhJvdf>v;o@#dm6HCQ_+(r@n;Tfyj8z7Gluvl08_dQkgT5eDO3KLX zZUKmV9g)Mu-J<1Y8z{H5v`~8T8i1qa0XgoD2*8YSUo~;h<#M#PwyuM;x{BUBxN~KJ z-cQ>Ba9x+Bxw4-keZv8uy&B}f%mT-pJyNUH_}P4@v{$zpsWTH9mA>K7bGb*BA36L! z`cyRyg25o+b74_Rk)O^hUDv5R^@vZ#g#)?wH}rk*pT=Bb7h;ksC1t!iB+>IxdHdsa fUh0(b>X5tva0^y+E9z*w00000NkvXXu0mjfpr=HI literal 0 HcmV?d00001 diff --git a/community/textures/lever.png b/community/textures/lever.png new file mode 100644 index 0000000000000000000000000000000000000000..b43d14dd51f0bd1461ed4a918bf2c079a34ee80f GIT binary patch literal 1360 zcmV-W1+V&vP)EX>4Tx04R}tkv&MmKpe$iQ>7{u2RjsT2vVIah>AFB6^c+H)C#RSm|XfHG-*gu zTpR`0f`cE6RRL;k>@Q#C4j3NMZqtkRU=q6&onSMx0ii6botEPx$x;T)#vvg#t9I72Cnp$zfuRLKS{5( zwAc~Qw+&oew=`uBxZDAvPljyDt`wvx6bium8GTa@=)VPeR=wVu`#607GSpS-1~@nb zMv9cZ=JW2Z_TK(I)9mjDK>u=+__5Q400006VoOIv00000008+zyMF)x010qNS#tmY z4zmCN4zmH{a@eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00SsVL_t(I%T1HrD?<$c#(!sX@_jf)Qd-JH*hrMiB}K9; zO)e-GF8mKJxO3xAP;SHpYbFhmh?r#gsG*%L?u>m{bDVAFocH2=>3wdW=ehblkKpt9 z4E~d4Fc_q?v=mL#kY$-@G|Iuj0S<=)v&m#y$mjD^R8+9FwS~jsV0?TWfV;ap&d$!b zzP_fnx0ifAkI(0$xw#ol(>3ir8#6TrL-qB(b`>O3}c;08Xcqjg1Wea=9E51v-X{=T&fj|IV*ZKPT zA|8+9@pw>G6=8mU{*OW=5}~4^f}5Kg0NUEx5Cj3c-A-Ly9g3om$z-Ukti&)39v>eu zJDtu20H4o?BuR{pj^cDWd3}8)lgS{8BB4--xl0<)hKW?|1 z@9%FO9v(P6JY;ZikiESs9Q4|G15LjMbrm?XRQ4}!&`2BubTU*g}om47?D2fDw zLE`Z^7K;Ud?d@$E8X9o9TmYP$oUpUAgYf%>#l=Pbua1rm8XFr41OlW|Ddy(pNG6j! zKR^Ew0}%H1_KefhQ&d%DXlRIZI*lYrtgWq~C<+}N9n8+o^7QmXI2^`ev5-h4C@U+& zEX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQKC5dd;MtN;K28FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0-i}kK~y-)J(A0ABSjcSPgVU@)fdNhVrSxk2_SYOfy82V zhzH;;c@drh2?R{U5DO(kE{@&ZRqk6g3y;`+yH7gjsPBJzH)*RFDMbqTw$WM`JcHqt$JxC@82iquc+ZyK^Ik6Q}WO@o~aMuV&! zvU$5=LKC_`KP0mG3C=W5Xs6MIu>Sgj>QFO=fj8e?0kE%Y=o0d@-2?n@VV`Q!IN@^x zKz$nsHj-U>{K~W2R{+>T&`u-%;^g)Iw_BVyFk^Ulpj*z%hYQeD>W2fZe{L zxebV0SkgFAz9}emM(6@V7$~ni{ZgoJ1Nn816oPe{-TezmL%wv(zgZ(v2qb8CEwPKI zWV=K%>Jz+ks$(F0jI>JOXD5BlLrWb4^788elN;vOIek4)-v(4}C@(#eoF4lw;g$}c j8|vFYQi}5P9HZesC7(G5fOn0a00000NkvXXu0mjftUM=| literal 0 HcmV?d00001 diff --git a/community/textures/lit_furnace_front.png b/community/textures/lit_furnace_front.png new file mode 100644 index 0000000000000000000000000000000000000000..83abc9f7a0b900ac4faf9769950391e40ff0c485 GIT binary patch literal 1260 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 Ef}1?x#{d8T literal 0 HcmV?d00001 diff --git a/community/textures/log_y.png b/community/textures/log_y.png new file mode 100644 index 0000000000000000000000000000000000000000..186b8582206232242f9dbafc7b2bd3a6e419b78a GIT binary patch literal 1085 zcmV-D1j74?P)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ$1*8F^LTU+MS-RuBj?{`TS9gF|xfk zWU$r;AcVl~mt*Q0to0EQ-hVpe!Mz(e=g?XsBFKwp598A(ckte$wdVgSiUO^5>RD?M z5sISV)tep6_TG@K&2@&Se=0-~@;oQYGRm@~)9H}UrVF52YgXG!SZgtZwLT#P8jS{* zmpWK$FR&=H7RDI7_ZVaNetbmzY;!Oi6Jw+(3has{&vUG`IOi5N=6Q}Wh8W|5HfD4> zMMM@FKYsth7=wr`0A1;H5fRF=OlRi&mJk9;DMASJmwSjvqJD5vxe{Z+{U6P z_%=Me5F+OsjYcEcXN=P)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMeB?Ya0R{#J28FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0>Vi|K~y-)MUu;I<5U=czjMxid{3MvZ8{-?SPXO!OCEuz zV9B0WV~vEw2E>LnNQe=GdYLqFm?m!Q#*XXb!(t?Ogzuuh`|5jdwa~Z*qYO!wAem4V z6-F82vlwL*>(!b>60&>*K>b+J4IL7XBaAiV7h|+&y0XJ{1Az?zs2(a#?nEBu7!hu^ z*W@-QwJAxGAmKPb8O7o68f_HmM+wR(Tr2c#&v-sYVng3J06zcZHCi<7!wK&^ayoSM zbx$;pkkC-wJ;4Ab(xi)+{cTBLL()YIz_DoP>z=bOCUl1mG1lNiPgPXJqnL0S0I-)t#+OJW9PTQb=Z4vGh9tt~w}NATM0VR9jcdrmoaiiMe_OI^cTB?>RtwMmnc|;< z%lMKk9RRsGq+5)uW*+I|k?J>mC5_JlYz9v0!scvuWw7XC_x;0Ge%! zYX_wK^AUi_>l|ei&CueV$7X`}p8ai!+zZJ(Azj2A*9`zR6HKI$=sW^o_4_@kO-WxS z^iS@CJQEV=0418^_Q;_-a6UQ5bpz%5l3^H-_I-;IO%{$wUPN5~b&V*?G@TKomb$FT zMj6Rs%#10Aw-wLya6z4f^TO<;+Rk)Mmsd^&K zQ)G9uM{7+s$p9$-ctmMUcpjio>~8ibrLfAPtzxxa0dSGbG1efFjq$_4yW$Q}mY1)V z7;9L+*--a2%h?ji1a}-zM)BE~pMDr>-B1(->W8m?_TG8IX@Ch0-J!#^1FjwD+n#N` z;YGf{jw})znr#a}Jdcn>kYHr--g7J(Tsx31Vq80*ts+bUuCA`=%8u&3Mx(J=fQd9u ztA6R=ATRK8ummu)i%)m145YNlnbZRp3V! Tido^^00000NkvXXu0mjfboMuF literal 0 HcmV?d00001 diff --git a/community/textures/mob_spawner.png b/community/textures/mob_spawner.png new file mode 100644 index 0000000000000000000000000000000000000000..3ba9080251373f7b8a070f5e84380caa465d72b9 GIT binary patch literal 962 zcmV;z13mnSP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ&B-&o=YybcN8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0h>ugK~y-)m6B0!+AtJ_KRa>VU|67#v4J$GhS0>cR#R1J z+r$3<-`LBhRihLL3M6s72ZTr4Y+~odSJ%h(J;z798ckeaI=F0!h+=lT9VW2IMw|J3 zjxh!)rQZ*NfQBqt7Xp_pVK}>W@MnEm*Yyr{fBMmh-f--6ocI^2s-mSF>p~!mdR>L(aqe|a{+aqqw#U43?v8WcrwQg5|dAqJOIC!!daEeV?! zSZg_}w&e2M6T>j1SkKXMLZ0Vd?jsZ1qnRJ^^}CyYn%Eppy=*VR7~{!O)++PpcDr7d zR7&x`D9aK6r4+KxoVrU7ho08rMKW-$WJtF7N!01@3F$pn8MM|IV@T5!wkt#wljk|g zW<;Gniyz;h_x8#Gy!r6Sn>4xkdQuXHvs)*%)&Nvh<;hu=o$QAgTuxne)<{9 literal 0 HcmV?d00001 diff --git a/community/textures/mossy_cobblestone.png b/community/textures/mossy_cobblestone.png new file mode 100644 index 0000000000000000000000000000000000000000..d76bac867f1f28c62f312a4bd6084dfe5ca94771 GIT binary patch literal 1401 zcmV-<1%~>GP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ%17=TXMgRZ+8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b15!yuK~y-)O_NPb6A1uDUps}iQ#viswft=%4UK^iNX_EG z#E=LW5)LN2#&FVudol5Z38*#FvlopgV*L-lqwi7yG-n%gi8gJ!gb-9aot1&QaVg;y3+Bl0+d@Kxk@eimR%M%jIG{ zyUyJ194)>UG)-e6y@2N@4|hB7l1L=j&^L(MqGYpKo=-m~Q^;T!MG?a=c%6Fg}3vBuwx<7jXY`z6Nx&-c+%8fMO9@Z2DU zLV-t#N0bgqSVtC?ZsE;(iN#{<@9$%;sHosn_!Kw#Z(tY(dPc|iY%q9kkm>1Z{C+=n z(axo|OW52tq9>vZ4-YdrImzQuQgu@86i|vdZP`{Plt( z?-63VNO~uYoR<0i3R>5NE@(_xm@bu$TdMbK&wfPDF zyVL1JmSxI9W!(Ao4xY0fVpn5WMGIM$5qts literal 0 HcmV?d00001 diff --git a/community/textures/obsidian.png b/community/textures/obsidian.png new file mode 100644 index 0000000000000000000000000000000000000000..b4869a918eb647ba61275bdad81a06c3b12fa016 GIT binary patch literal 1183 zcmV;Q1YrA#P)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ%4jBFv`v3p{8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0(eP8K~y-)O_M!u8%Gd^pV=j~q)d?vZ9+~E19A~ah?63a z5O*#TAdv0GKgqu1MtKcIM{p2$>IoOEGb1&y5(T+87GS)K#;Ai znKn(seDVNmEz6q)#w0-b@!J=?KK>Jc>-xM?RN>sPQ)H0wc%~@@=93*({sKq<FyuYH~A7O2eJN+rvT0#gk##2?7 z%qKgXUH!w}*H0LYMw~2;Sot;9xxvdAYYz6F6Jv!>6^$mgHYbP(K2=!TBj!xg1XMFO z)xTWV=U59e9?#Vn+X>$2Oe}yf8*Q_^Ii-{aW5D~&_7`7qRh{v%$FwU05rb+w0R&aU z@@9z$G)+X+FdWWU`6VgkPaYYV5<*1?>u$F#(jo3X|bIR({D~FygPbzoIIDV4a)4JimTN2y0Z8m^T4c002ovPDHLkV1g~+1a<%b literal 0 HcmV?d00001 diff --git a/community/textures/off_redstone_torch.png b/community/textures/off_redstone_torch.png new file mode 100644 index 0000000000000000000000000000000000000000..e09094348f431c1c749beb985940af2e80dc36e2 GIT binary patch literal 659 zcmV;E0&M+>P)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMtIuAW;Z2$lO8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0BlJ_K~y-)V_+BsgB*l0F#PvmVEB(u4HG`ePYetU4+&U; z*8r0wI|gN2HS!G*7i44j@aY@*1~4%(F|e_*k#7JO7Z=07fB(og;Kz?241fOoA>V)t tw_h?aGBT2HfT5ZMWnMUc>jgnC003?~9dovA=7InK002ovPDHLkV1h6F4T1mw literal 0 HcmV?d00001 diff --git a/community/textures/off_redstone_torch_top.png b/community/textures/off_redstone_torch_top.png new file mode 100644 index 0000000000000000000000000000000000000000..c2d50249f5ff86a1b5da1f429f69c99e15fee7a7 GIT binary patch literal 588 zcmV-S0<-;zP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMtG6Ck~UjP6A8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b03}I8K~y-)V_+Bs!ySY%F#PvmVEB(u4HG`ePYetU4@bjs aBme*;js$XtlH@Z00000EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQKBH~CWQk^lez8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0(MD6K~y-)J(JsV8$}dF*E!wObCE_G--2CG2`PA?itxg> z@v)RCia-(>S(apFB+aESJdE)Vbg#YFKJxo-zb3I6X*h#gw3wr=z_(jO1XI=|F?5fA zlerwN8UW&HPl^Gn#T>O3z5EstA#_Jl45)Pg_;ye7J#Mx@Oh&u;LRD3WD^WFA%_|Va z?;ij#^%VpqsfFk<^%Y_=QWybPzWWI=8R7gDNdX)C6Uq0OY6)ryU!O=ZAa=s_hc#;5 zD|$FSPefPW5&AP$ttCc}Z?~wc&|(h2dHsR?6J))xPpFl&p7m0f7sA> zXNtN(i#h(Vrf;9gs~WKxDF(Xjiehnz7ITL6UzpiM>*gia-TsIJVt<0@QCCr3RuDa? z#pD(4`YrLaCk`FuyAM;jr^7@vZa)K%y;w*oAt`{JqWJv-Vhm<>fmRLSxC215l4LTh zmJ0xehd+=k$J96A1OBi^)F8%8tsi%U2;#T_Xntf_Ah5uzVRF;IX1fjD%eFd`{nmfw(KVBD>yrMiMR z_VlZJv}&+^`w6Uj)%SlVrdpCP_}vOrr&+s#1&jB0gziXap8$}oM6#UFKH>d{9sd0jaV2)~hS;@} vcbh>mpQ7wmq!=(|4Yrt$Za87c7QA$EzY~i00000NkvXXu0mjfldlsS literal 0 HcmV?d00001 diff --git a/community/textures/pig.png b/community/textures/pig.png new file mode 100644 index 0000000000000000000000000000000000000000..e3e7fdcba0200d78f518b87a4a47198cfed03f86 GIT binary patch literal 1391 zcmV-#1(5oQP)2{^YFl0qpq*+Q1J@d{ijC6c;Yig$aEW;7$s>W5crP^t&ZN}3-UNpHUIec#Li zGI09U7n7_y6p98Y%i=QE2V5JgcfViA-JfVYyZ0vzRRsW?%L*1pF8%i$2fg23rMCZc z@8`_>|NHFOnF+M`lWT>P*qA4QQ53G-M!C|1^}SzSiAdWCgI3SzbLBIUYhAn)8P6z zdVYYT=Le;dMuc-&DZS6mqsQ>NU3h~tbRIn}+eNb4=YwZ#<_4ddeh zq~;2}boA>l_~_$L008?3FR=C5^_dq|4=ma{yaqc!%dzvu8pxZ#9HTvnKaJZhn>kZE3-Iq z@yCmU)b@EaP9B_o_w59(O?4f4>7L{8?wTCOuaWmz(f0XV6(NkG@jteVscXnV8B3b7 zQHph$1psSfb@F0 zo+-BCRs%pFM8gMT^EISS+A-;az0N(GC{+-{>P~jp4Fq93JH~0q3URC2UP^SL>yS1# z(AHa2tF-k%9Frs%drZm_2(R{a3mD!rwprI3ZbAPFb5~V3xvYC=Dcx8*2I3zOu60t6zUpO4Rkfqfi1c zu4mGaHp|m227pA;us^afK70euaj>>?2d!JT>5TAu!S&Xy+gRJVLrIeu-<%VX|2Ieg zZwbnF%Ybqx9Vx=yth0P5~~<{%H@Cl>leCV9-?yLzetm$Eu@k%T@Q|9QDV;=z>tTzBE%Zgu~Z~+ zmdM!@a93GLx`wLaJbo|Jh9QUB8QAqQMVsPo$oMoa0V#YAGa7$QnBpj8aeT|ca#N+p z&^2K_>NW~2nvv+JthJ;X^MwS&+y`0E5`cA2Q(aYt$h`EWff{oG7ml-{b8HP0Vlg!w zzo4)zWAjyw%SRMdvEmY;ra+V-?vL!iJ%#WshmwcXp^3t9n`k`xi3{WSvO$gNKmv#+ zv3WNWvml17QGEjd%S|;Qj=4xB+;)*go*LDJL_aLqUjtCmh?W`*SrbN6k+rdzegY!K z*Na&96kk`WQ4Iu9l^_8|@)|5j*cEca;yYruR3yS?vIT+J^C4Whu2C5*5j{e{Y8vt{ x+EPKz*~A$k4=rc%Ds-D-Y|jUPI&)h={0D(W9F~eDaa#ZY002ovPDHLkV1jelq0ImQ literal 0 HcmV?d00001 diff --git a/community/textures/pink_cloth.png b/community/textures/pink_cloth.png new file mode 100644 index 0000000000000000000000000000000000000000..d83b6162f575d2126ab9b2500481cc6d2da39c49 GIT binary patch literal 1294 zcmV+p1@ZccP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMeGKPNmkN^Mx8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0_RCYK~y-)J(A0A<5U1Z&-K06&m^|vrjyX5v;%_*s@Sq( zi^TWv8Az;IBQ|XL1tc_x#b`RE>Vv*$J4sU}&BKY~_}XDn)K54M@yB=Hucg)$vl&7w zoFv8xYs{|uSjxglVl1V2e0PSf2Y8((09k*8SuRj+vw_f>X#XXarN}2!%4~%We5eeI z_xG4ZhPxRdwc_#3DLSs>#34>nN7>B~AuXoImk6y0dToTXDDx%d+)&%zLe*SMx&&bB z+iirFEQez%V^FKngkqNAwiA@^kY3zURUkbFf4jrv4Nz4U35KQ`1*iiHb>3QZz%I6 z?nZ*sikX~TvmAWDZ6`>rDT{*n;RQjjjh8eS9h~4K5m;;dj}pY+KmWRZmX{Y4vpE1% zC6=wRqXtgcAiW)6(u`2T9adArylb_;`zTQ8K^2 zqpCnHha)Uo<8Flb-8RGD-yozW=(SP4OZG6rZYD(CHUN{eOYEplw6{xD8N~6AzpRB+ z&+LACgH@Vh(j}EKIB`g23bMO?S^@K7yI0Z}Kw-Z3| z_}3{yDx}sZsTd!f0T67xKxmCpHSbB*(HTN&T3_vB*@}lhk1*3YjlCV5utqUoU@1lS zo38;#ZwE|IFA;}7{Isr&!E41x$6+;{VHWxSD`%wt^r?T+L)Yu5noHJy0Kn_CP`-<@ zqu_bbGB^0$7G=IfNQJ%8r2EAy^2wC+>JBlK=+H+xF6mVtvsj>puiv8Ub;4KMT3Dox3KvB)duN`J}|W~1vPJeq-Zo6s0!6yWI+x56xVv&&z*!RpcOTy xo*qah|Am}@m#W+Y$74GF_~D-UpAJLNUWUc@J literal 0 HcmV?d00001 diff --git a/community/textures/purple_cloth.png b/community/textures/purple_cloth.png new file mode 100644 index 0000000000000000000000000000000000000000..8b245d92eb55e56ec2f288a7d33728d832eb1f04 GIT binary patch literal 1248 zcmV<61Rwi}P)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQKD3*-y+mjD0&8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0=Y>;? z#A>$NEyFM%+7d@8+5Q!K3W=liOti~s+KTx%Gpf8rj26TM?8+s+P4G4b;Pv>KRnd^T zYpnLX?bkGY!E}6wl@U+RkJMd>Y>F37eMJ;Z@ZOW{UpY2!T-ZxQIohG-_5E)q?gk$u zERJ9B5~I+>c8Yv=`w69?*q`Nv5)(?yK#wSg3n$!O+_BFJ>bBt1xAy=XH#J??ApwACNZbdk3CWu`yu{4r9=IV} zZV7`6X7ee1H=us|<&QyWXv%Zviz`Q!x18#Ze&`r^OWzF~-}hMUQ5xFr#QSMWWG|7` z?isBNk-Y?9@v=uLb-pl$)!Pe7DU1qG0*m|sfYe=Mv>?um8HRyH{(#ZK-PI46K=F0; zNZIDh{6}06(zY#H8SX#+2*5roSik>^cpK9X9n)i|1gd~1~SWULv(sn1tF2Ri~>)qMORXj(j3I73j12rkow@*j_0000< KMNUMnLSTYhG(Lm? literal 0 HcmV?d00001 diff --git a/community/textures/rails.png b/community/textures/rails.png new file mode 100644 index 0000000000000000000000000000000000000000..802d13ce9f5858ed96afa7960dccfaadc9278b23 GIT binary patch literal 869 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 literal 0 HcmV?d00001 diff --git a/community/textures/red_rose.png b/community/textures/red_rose.png new file mode 100644 index 0000000000000000000000000000000000000000..4a202b59f486669a6a8fea157d07581fcd3c8712 GIT binary patch literal 702 zcmV;v0zv(WP)EX>4Tx04R}tkv&MmKpe$iQ>7{u2RjsT2vVIah>AFB6^c+H)C#RSm|XfHG-*gu zTpR`0f`cE6RRL;k>@Q#C4j3NMZqtkRU=q6&onSMx0ii6botEPx$x;T)#vvg#t9I72Cnp$zfuRLKS{5( zwAc~Qw+&oew=`uBxZDAvPljyDt`wvx6bium8GTa@=)VPeR=wVu`#607GSpS-1~@nb zMv9cZ=JW2Z_TK(I)9mjDK>u=+__5Q400006VoOIv00000008+zyMF)x010qNS#tmY z4zmCN4zmH{a@eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{005RrL_t(I%VS^|1+)d<+4=u}XXpQqPYokJ&9i=gV{l+$ zVR-qUi9ww4AA|m{?-=TtuxY-?#`*u&|6dFaEG!IajBE_o|Ng?NnV<^}|NFym{qHXZ z1_lNO2No8bhA`lAg;+boe}QC%|6~VZw5u6qn#I~Fu$_T{fk7adfuJEw_#{8fg#kl5@Q2$p8QV07*qoM6N<$g15dX+W-In literal 0 HcmV?d00001 diff --git a/community/textures/redstone_ore.png b/community/textures/redstone_ore.png new file mode 100644 index 0000000000000000000000000000000000000000..ef0bcfe40b88d1f0d74f7f4adf7c617ff5bbe223 GIT binary patch literal 946 zcmV;j15NyiP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ&77~fQ>;M1&8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0gFjQK~y-)g_E&rD=`p7kI{B=p-zR$6#EAc@*(+zfXj8i zu-+z(4eKuZ5BU>!DOJ2u@U{quV1bK(USW?|I}Vw0n7O)l?$x5}x|~vCURrC6F#ve) zsq2~;BlqU2+lAX&E|&lpV=%_xy~kP$KuYNhFilfIe;5Y-uGa;?IY$Tqtu+9z3AcVkA<(&K0^WIaXlt?L|wJtO_ zea~A}acCN})=bkxvtE}T!0~v*T1zF!F-9I=Uii$JQ7On7Hw?tK#ahd#6sMf8n0W8c z5~OiYr@SU^%=H6j7dCy*s1)zd&(w8&b#;*ww%fbli+e$m`m^5?av?~#u{Xwe9i$Kf z55vG|w*%nNG=;u%4pARtEVeIJt5ud{$sL5gBv6(l7hE1FNBl{G$awnt;;pLqxX3wO zRp4W9EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMt15h~RWdHyG8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0C!15K~y-)V_+Bsv;}_|82<|NoS^Vm-N<85kHCCKtQ>x6zluYXB2oNhT%+Ha0c}vJK$k;$rys?;rUF z{P^*M;m@Bx`tFjSME%nRply&&iX0O$5J@&tIFH2?qr07*qoM6N<$ Ef)5QL2LJ#7 literal 0 HcmV?d00001 diff --git a/community/textures/redstone_torch_top.png b/community/textures/redstone_torch_top.png new file mode 100644 index 0000000000000000000000000000000000000000..ecd10c451fce6d1c3c62128eff8cbb80b38933eb GIT binary patch literal 604 zcmV-i0;BzjP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMt9NjSKkN^Mx8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b05wTOK~y-)?ar|c03Z;EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMj6z%U2{ooU#A9M9k#?7kwQR8`ei`pA7i z$Q%HN{fu=$GPAF$@oJD10I;3DEGZ;oJ8Q1jn`{Q3EX>4Tx04R}tkv&MmKpe$iQ>7{u2RjsT2vVIah>AFB6^c+H)C#RSm|XfHG-*gu zTpR`0f`cE6RRL;k>@Q#C4j3NMZqtkRU=q6&onSMx0ii6botEPx$x;T)#vvg#t9I72Cnp$zfuRLKS{5( zwAc~Qw+&oew=`uBxZDAvPljyDt`wvx6bium8GTa@=)VPeR=wVu`#607GSpS-1~@nb zMv9cZ=JW2Z_TK(I)9mjDK>u=+__5Q400006VoOIv00000008+zyMF)x010qNS#tmY z4zmCN4zmH{a@eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{005RrL_t(I%VS^|1+)d<+4=u}XXpQqPYokJ&9i=gV{l+$ zVR-qUi9ww4AA|m{?-=TtuxY-?#`*u&|6dFaEG!IajBE_o|Ng?NnV<^}|NFym{qHXZ z1_lNO2No8bhA`lAg;+boe}QC%|6~VZw5u6qn#I~Fu$_T{fk7adfuJEw_#{8fg#kl5@Q2$p8QV07*qoM6N<$g15dX+W-In literal 0 HcmV?d00001 diff --git a/community/textures/sand.png b/community/textures/sand.png new file mode 100644 index 0000000000000000000000000000000000000000..257020ed72bc1f71f862f49326594c87ed438ee2 GIT binary patch literal 1333 zcmV-51EX>4Tx04R}tkv&MmKpe$iQ>7{u2RjsT2vVIah>AFB6^c+H)C#RSm|XfHG-*gu zTpR`0f`cE6RRL;k>@Q#C4j3NMZqtkRU=q6&onSMx0ii6botEPx$x;T)#vvg#t9I72Cnp$zfuRLKS{5( zwAc~Qw+&oew=`uBxZDAvPljyDt`wvx6bium8GTa@=)VPeR=wVu`#607GSpS-1~@nb zMv9cZ=JW2Z_TK(I)9mjDK>u=+__5Q400006VoOIv00000008+zyMF)x010qNS#tmY z4zmCN4zmH{a@4B02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00Rw4L_t(I%O%p?ZrfAJHZ84h$le216OF87#}U8V-;;_n4Sqq zv@X%QL@9-7TI6|-ZQFQW1*H_KP?W4$<^|F;$?}|_Rzn;fe2!8}Ozq>_5yRe$JkKf1 z617yEpP%8%fX7b{v27b^npn1l?^g&nLyW7FAGGiLRD7Sa%M*lQP@=Ic3jo6~ux$sk z^bkUDaq~ADj)OE!y1SoZyngw$_8b=>B$i{5CMiK!BbgxxSmIzXOv}$ z5Q3ZD4Ptw18w^e8w9NivqtOVm0ZJ)~Wr2v}7?jH@6Z~`X zBa_LLBF|VBOXg|{8gBYMe7nJm=U-5*R*8Zgq%_&u>|mU}`ChM9D?+bDl24FQvY0Pu zHX~ZCh^y;s(rJP1Yu2kZe$~fVxg^<$X045|EgM&E;y4=wZiJKmrFStQ3fnw= z@tpB!jO%)2^9;3I0x(y1h|8-hj!s^YWf@5}Aunfm_9j}Fq{W!q=_O}xf2G~tq28!t z+W$XDl7yfZAUd56&p!T)pMUuY-)Ruv#e_k~{bGbGL$>N2qNssa@wgrI0a&P*dVQ1o z**(T@FTc@S^$yrMz4I~62LVN%W7`fZwZw89bg5ab6_5A#`SbV~09|TE!!csF-6by* z?xr!_CwmBCuv)FLEsOr3&**jt0Hwk4A4k;Oh(`4RT9>rj4>0uVNDt1>=}-S<&>zrw z_z*)F7#QsB>@%58X*HYN&t?=l#WV$J`kv6+B93Fk_31m3G^MiPva{2s>Nb&U7uR!{ zrhVSLd(ANJ@z?3^WZ43_t}u@k!}yAd?<3ylcT_?XZ9tNw?0xbCFOZDKV|=?ox7(#& r+osiuSg+RH&xeF9565xnk1zNSr0#R#4Z7Vy00000NkvXXu0mjf;s<9p literal 0 HcmV?d00001 diff --git a/community/textures/sapling.png b/community/textures/sapling.png new file mode 100644 index 0000000000000000000000000000000000000000..df8784b3c65fd65a88856f0461cedf150c2d444a GIT binary patch literal 989 zcmV<310wv1P)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ&HL&i?o&W#<8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0k%m*K~y-)y^}#}6JZdBpD!*&60=!oK(q&|5HJ@PQZL0y zbC#SoV9z~xHTnzs6N3Lh5Dz_cPa=4;O%EQdCKnAZXp&Mf!os&3HYuWvr(N7lNN>(< z=9_QcdEc3V|7kl1+memt79}l8+&S2m@knDimMkss@o2z!q*KM}ZCm!6hYFxos;2T) z7UlMz80mE~9xYcNNl z-nQlLyBvM*6tkG8a%+ue!Dk-$CIHv3u2Lvmrr%gex=K;F@#vZ~YGsLi%dwcd982nLTa4_Y1pbWUb>IWZK5W<(PI_JnQM+1oL301{kA;b2S6-aaDplz>R`_zi zFgGpjYNeL#{@(7UMALKn-f1$z3vVH7-+%ZC+M@TR1%fcT@IwCrLYdy{z7gK`00000 LNkvXXu0mjfL5sPK literal 0 HcmV?d00001 diff --git a/community/textures/skeleton.png b/community/textures/skeleton.png new file mode 100644 index 0000000000000000000000000000000000000000..7e3f09575451c6887916e1870d323405fd9f5d7c GIT binary patch literal 1183 zcmV;Q1YrA#P)c+-|S>1(^&XRx*tutUMZOe8>3P3MWw0h}+m1?mB>=$iZm9Z8 zdnJ$}!SV5NX5IM!U=)myGjrN8qhK`m{x`qAS?hV5f^FN8e8*8RnpyWUeY@3;q%LRX z&}=qW((kOhP|LCuiIN;Snd`bynwPgM3*6@*MKaaj@Am=BC$ZgXr+VHd5GPM($jkI` zozCFr>DMNh`&?a1VsyGyVObUcfE39L$(Cg)lAkLsE-oS=1PX-$gb<)*3L(Ty|0;R_ zO0KH^Y25`6?}o5#J90Ws#C?w8-4L$pMo!0x;vqW?!f^;nDHvm^jAa{PWDNiSrF0|h z9U10iSeTbfUDs8F0)RL0An#+0f!#9DGKJG|B5&X+OHAep9k|aGx!rD8E$;t7GAR;- z;}F2ayPmqeqswpYRy%TCHk{K8F6W3jfMK! zVQrGaf&l#CLA6;hae`&~j4lT^&Keopwj=3H{eB>&i7en%SWko^=$USqs zI@WE8bbX8TNlVww2c$E$?}>Oc+k~9!!Hu&$a&lD-;SUGNqA12pCxd0_mi7AM6c0=!&dWko>r^qJuvnDNYc{ z=V6#80AP1_cS>iNCJfV@B05f>nir2-gSpS%AmrN8%H;lbU8yBF>D8+qKMwDPYT_iq zaR`D(0+adn{{CK@gC)`N!YfJKHW2wEA>S{JT>B(z5p+jrLI`zjWDR%&57kOlkr@U7 zemg%00Q`P_4*u|fR;#7j(!;sW)xGgK0n9b3csGPM@Q^cesb%sQa~=6z3D%vH z#?Mwsk>KRu1eceWQ)6EL@*1Q_@WIyG@exdGv=f2Z^oRi}db^Yz1Z>ZPn==b{=1tT@*GCY^RO+N}dgTWVs z<4}dO(q0Lb$}0eme`~6hDk_y%=-u>`_Y?{R7+C}1IGj2Eh=26 xB5H@Vnf$9e?BG6Ep81lN@s-_f`ulA?{sklb;7#+Ts&4=Q002ovPDHLkV1n|DH6Z{1 literal 0 HcmV?d00001 diff --git a/community/textures/slab_side.png b/community/textures/slab_side.png new file mode 100644 index 0000000000000000000000000000000000000000..0c9bc23ac8e8abbfe3a01c66f9176231bbb2e1df GIT binary patch literal 896 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 literal 0 HcmV?d00001 diff --git a/community/textures/sponge.png b/community/textures/sponge.png new file mode 100644 index 0000000000000000000000000000000000000000..dcb11e795b54729c3787730de704725c7eacb3d0 GIT binary patch literal 1316 zcmV+<1>5?GP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQK9Et<1GW&i*H8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0{uxuK~y-)U6MU$8+RDSfB!@F9XfH5jPM^xCWRJ4K@d

>ZBF|G^- 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 P00000NkvXXu0mjfHdO=U literal 0 HcmV?d00001 diff --git a/community/textures/tnt_side.png b/community/textures/tnt_side.png new file mode 100644 index 0000000000000000000000000000000000000000..7aaa0d758441683f856a26a8fb2e9b031b841a12 GIT binary patch literal 772 zcmV+f1N;1mP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMh83FH76951J8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0NqJMK~y-)&5|){12GUqpVm%nuonU$jhn4<0g=L0D&KcI zA7d_{N@W~uV$`fRmXsoqkQ*D3A`uKT@Bd*W#3-{_#lz@1jDe4H;N@XP4L1Nofa5u` zI|XXF;g{#{2Pk7qOyHcOZQF~6QghA$T(XG7pCLI!BEX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMh2^?5LcK`qY8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0dz@3K~y-)m69=Q!ax+qe>SD!)=J^PvEY!wsT~gDRCLMM z;pn#z#LZE%3VwpF<%TX9BTfn2P$!2B0mp(+v}+4u2a}LWQt-bdk9+Uk`~U9Ml3wdT zs^!-Y_t#gP6JG-O?g#+uWx~1fMb^z2Ls7;U2CE(I`A6wlrrPVn?P2r12OzThJgpaO zzV}3SA14lo>^@p+W}TZn$BBcy!DZ2tSTA_Hd&Jv@M1ZJU03^K@?fC})$_7_7su_6O zFiqAt>8-vyLN$+LYps#fX*q+)?gKDQ6SDD*F=(xi6DY-SI4oySEIO4^3MUQ_b&Kcs z&zwoEY7a8cS+Tbb88^GRjilFN`So*b;Jc&zY07TTY*{Z82CE%PDWsHt8AvH{;((;r zDlIO)y_B+=!CEX>4Tx04R}tkv&MmKpe$iQ%j{(9PA+CkfAzRC@LaOT7@E12(?114kp)6Xws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;o12rOi4rtTK|Hl- z>74h8BdjdviO-4047wokBi9v|-#C{X7Imu4RCM> zjFu>S-Q(T8-M#&LrrqBU*0XZY1rG|v00006VoOIv0RI30001*5eDeSR010qNS#tmY z3ljhU3ljkVnw%H_000McNlirueSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{003-BL_t(I%VS^|1%n*?zrpbTe?P;2@(uVu{r~^}|H(I? zCdux(t` literal 0 HcmV?d00001 diff --git a/community/textures/torch_top.png b/community/textures/torch_top.png new file mode 100644 index 0000000000000000000000000000000000000000..8d66d02feaf300bda3daf25124a684a4aeec93c0 GIT binary patch literal 589 zcmV-T0EX>4Tx04R}tkv&MmKpe$iQ%j{(9PA+CkfAzRC@LaOT7@E12(?114kp)6Xws0R zxHt-~1qVMCs}3&Cx;nTDg5U>;o12rOi4rtTK|Hl- z>74h8BdjdviO-4047wokBi9v|-#C{X7Imu4RCM> zjFu>S-Q(T8-M#&LrrqBU*0XZY1rG|v00006VoOIv0RI30001*5eDeSR010qNS#tmY z3ljhU3ljkVnw%H_000McNliruX1b02y>eSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{001RPL_t(I%VS^|1;ZWuzrpbTe?P;2@(uVu{r~^}|NoB$ b<*)|;4IvElCp5KD00000NkvXXu0mjfH7xe{ literal 0 HcmV?d00001 diff --git a/community/textures/unknown.png b/community/textures/unknown.png new file mode 100644 index 0000000000000000000000000000000000000000..1ba274d99e19cd481cea636d29f89a4c8b58e3ac GIT binary patch literal 5519 zcmeHKdpJ~U7azrlbfFs}W2BUC?lb0+$!)|ax1o@3duH}9nwyznMktqVY9dY)T^vQ6 zPIQse{cfaCgN{z2R79!JAv!1d_Ds4x-}$HK`ObgMJbPyE^{(|>YyH-G-~GO60e)T+ zj4h2}FxUj9H-iQJPu5=J;LxwlpCbSaX5hUpI8@F86bOk_%;O6{ggj0HB0wdd2ZJde zyb1}IwmX@;@0=&qPtiB(r6ertfK%7!P2yLTzsa;F|#pjW7)gi z1@T3yK&5l_yRMq>L@Ip$B}>{YT)BMnwTWG&XWG{uN%b#_e=|L#GcNvlXGTKRN{KosHLbmo z^{&Xrv3GjFH3MbdZTI^RuO_6|*)6iM%D>-KaPwet+~lXKRYTDktGaC8bqzPUn5h5$ z0B>6C|Jbvq2W**{(SPD({9A`Yi(iVL8vTyTORvAjy`F3L*6PmTveKibb8;+72bNdP z8!}LV`;Cep2pmfqRi)J>V{9|WZcE)`30mI0cagPe`%BuJ23qI*fP9+4^qWgvaGi0M zmVU4ee;V_GC2EgXqScY5dz+-$Q!j`&=BBSv^;RY3MLbsAwlUd(lWnekVeL57!JB?< zM_S7T_Hinf4)?V(A3ZvR{@5)zy*2mS$(wb9}?2 z&ITD~(*`x1-DUIvXV;3yh8fr=I}7Y~BpiwjNZkIwQR?EgV`7v@uVVsQdI(-o4W{s@ zMpFogXM2*)EYWw3B;(3`YDLJ9og{doVVJ4a1(PZJ7EQq+s`sxjmvaVPU$1O2>E11o z9jneYYE>X2=EyPC!&{pdlvLa|dEqVq3&PwgW<&8066n9H3ce3DUonY`e)<0%(m zsXechR90c&)Z}qBM5#-c2#(c-wfn!0<8^yOWH`MIp(lYzD z2G_AC9om+x%CUB8(;JW#g&i32IO^7uUeRM)5Sd?`I?Qx_TyHk%X?LJQ=#-wc%L(Mw ziG9BlWM|(#39H%iGBeRyvGV4Y{?y8hJ-ziOOwyNB&9Fx2v*{Y*gCNSxhJnlxRAJPl zZcY68)Bf+B9tD8+hV#i&{WL8qPf5sG*OK1GmE{G!>cPnFf*>!wdiSRcL!t^8ypVNj zK?1vHGQnI8AUf;mZNUAB$iFkkhIoMb#>OW&hSq{PaK`ZKo< zxGX*KAdD!!JU-7Tkd__0{;)p1t~1KL>XO5ybt8{7b4?zvKE~v%{Q$2$IBvC>;V;`@ zFujd@503z*hsUQi6z>bP*e=Q?aAeBaKR|0s<5Jd3iR$X=R@zfP~Rmqj#!8W zxMDVlRthE1I}iqQc2PgJq+BkcVK54X0<9pR#nK22j!LCsuy_m}kAgH% zvN(|(P@+UKJ1xXV3uUo1jsF#)zXMovc}p>f2g_=FN)-_P(O*(eJT9~dPd z!QjwXj8KUA+CnDxjDI7Z3=J!3(U-0o`#F6XnoBt|OGrNiZ5 zKmjO(RArD?+&3=0n7#p@EwmIw@P!hc6-4$onsPqx3t8X9rXA6x^K~GQ`Dfg3v_Ivp zQ--vBeQ69aCq^3{lR-yn{nNN&4xdZY-2wy(i2wj36p73OQA8@1fT9pU5(?mwus9-x ziX-3%UqLZNGC3gPfLbUB9Lr6c>WxlG!*S0gFT7cpNT@2sq(UYyy#l!gKH(kPVQXI8JyS6qiF= zB$f&RsGNKu5CLK&q6po9mT;O|0F#cyqp@Ek0RlkIgAC}%r6Ruai#(Vw1cT&&mQ0)z zo_%D7&OYtvyfS`Xk`7VBc z(Dj3^?_%J)lz(*B54ygKf$viO(Ov&Hx{SXZcR&%e2~t3ZnYk59KR^c|ID4@d12&@l z{(Q0cCrDx>@eY&0U}!t-rKc=%iG_rQa;C4RVTYly>Da09jVvojWFhwqm3xSV+FdhD zx0?gG2nAmriO}xmLXs!WfRuWe47XrPO#5nI=#qu_aOILhooH$)}@chZ9xU}kl4MT>B bGi&w!3XglEuh5=8VKAnrAEV5DP0D`($?JZ# literal 0 HcmV?d00001 diff --git a/community/textures/violet_cloth.png b/community/textures/violet_cloth.png new file mode 100644 index 0000000000000000000000000000000000000000..30374ae34e55b076f0d715aece6a9f5f60a80d69 GIT binary patch literal 1264 zcmVEX>4Tx04R}tkv&MmKpe$iTcsjZL5qkuWT;LS#ELj-6^c+H)C#RSm|Xe=O&XFE z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0DryARI_6OP&La) zCE`LRyD9`<5yT++(TkYGOnpuilkgm0_we!cF3PjK&;2=il$^-`pFljzbi*RvAfDc| zbk6(4VOEqB;&bA0gDyz?$aUG}H_ioz{X8>lq*L?6VPc`s#&R38qM;H`5l0kNqkMnH zWrgz=XSG~q&3p0}hH~1nGy0}1FmMZWuerT7_i_3Fq^Yaq4RCM> zj1?$*-Q(R|?Y;ebrrF;Qgm!YSGJOJ`00006VoOIv0RI600RN!9r;`8x010qNS#tmY z3ljhU3ljkVnw%H_000McNlirueSad^gZEa<4bO1wgWnpw> zWFU8GbZ8()Nlj2!fese{00PKKL_t(I%TMGxP59P~Izq~yew;uJ;DZ2~mE znPq;UE3dNXB7aiUh6_gnB|(ElITpn!B)drs^bhX2=NO+pf9_1vBtPc}DF}TZtu>q7 z4k;!5AV3JgbUvro>k;+)0341-s;WYTzK>Fhx8pHVN}jWfx~|cVL)Ufe9v`WyiXaHE zl;UAJ#q&H|*Tr{TltXTon9zea-27Mk%GRlw!Nz6Z$?u z5YTlU-)1wCBq1J+uq=!9WPHtYMLYf{4$v!grMs>+P0(O-`i{%p2G>HcTq9|g2H~^rv#+TM%HLpe^ilQJ{t*|T$%d#+~f> zDMoRO<2W3SM?&A{`lp5EdX4M4ycv&ang-+M%a=|FK~WR{48o9eQBam8ZQG)?rfC|| zG{v@Uq?A-u#nbaMgD^xbmP>>XFNuCzEHDg%K^OusTPzSlpp-&O$#gykU^pD2ltMW_ zlby|G2&MS#-8+<0{PXa@`E+73nV_|%EK7tCeEjeMfc@b>vRYyMadXqPZA;*JSeC`< ze5R_Zmz1~LEti*<^m;vP+a^s@48x$`@6)qwl-BxxUZW_Yu4|-}_`c8eWWsZnvDxh~ z3hAs?$8i{6UXo=Q^CZD>94>}KOeslLE2EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ(3Q5U#WB>pF8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0MSWAK~y-)eN#CSgD?Qh6(_!p`TKao@vCOcFYTEDd#|T)(zE%1q}u`MQ!Fh?)#8= zIbs1E0dK;87HA=_7%Wy;n#cj#oO!MN5NOcJn??*-L;Au=(M@QgHz)FFZ4c;G*py!u zk{2Bs+SQq7@f9~6!4+|?0Y}i+=t81k=+oxwhN?VuA!YE~mtMi4X7Y7Kp58)699hra qNV)}2oEOw94QT$~EvV0-Gxi0ZTAX)k$%Uo>0000EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMfE{kN9o&W#<8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0@6uDK~y-)J(Jx_`fLD(uepy$-JCOZ^DBOYP!OH<{~tsr zQFIU%fvh0Qk16V8Zo1`s-h+5Ozqz^Kx^Ly_=}8ugMWQG|(=_V!I<{>y8jVm@m1eVv zs;a!byhDz{kf2aU7%E-`~sqeowt#r{C}6`#$seoJONTu~;O_ zGUoF+yU@(vX*Voq+3I&27AkT9w%R)-Ya5%&;3_6_-LI}3oEmBHs+va#YqReJ9DW$~s zeQew2-@kvvam;KsLkMvqNz;@t3^_kP=lA!Q)oS%u@bdB^{|~m?Z5|&V(RH0}w~J|- z%;$4F&!gMz0^s{TmSxduwf;1QVJHiQ!pXDix~K8vc}}HL;cz$*1OcT|2~E>T)0D+x zf$O>`4-XGg*L7Ui1t1JV6h*=FJPwBg-{0S;s(PCF`};dmO1j-H)oK;x_4QRsDH)H) z=(^7B?JYtGo}ZtIqKM1OOKjUFj$?!nr!S1hV|?F7nNFwjcsx?C*AYUn*=*SF_w4t3 zcDo&4Utje5eJsnOTrLv?0g9sFx-OPwq3m`$c|0Bof`BZ`Xt&#}*K0IQ!!Qh*%_i&h zn$c*4q9{0ygJBpfmrIf)LAkrTla^)C@AuhkHUvRHxm@P_{2UoO*uO|!!%8X j!y&4wa&d8is;c}442g+xN{R)@00000NkvXXu0mjfI512l literal 0 HcmV?d00001 diff --git a/community/textures/wooden_door.png b/community/textures/wooden_door.png new file mode 100644 index 0000000000000000000000000000000000000000..9d21e8903987d6baa53fab27dff237d0cd2f32ae GIT binary patch literal 1132 zcmV-y1e5!TP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQMrHLbK0egFUf8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0!2wgK~y-)ZIZih(@+$Lzu1oBx=oX)c~p&HVPk+5Rbpgd z?2Pymm{<{FW@139Iv~cboseK)K@3cQRDnuFXj0NN&ckt?IQF%#&0rcDnzJ0;-?{fZ zzI!qUyE}>SJuaJWm;fX)A`Hd+{J$N2ZJ_~ln+|a->5n}sMH3hyq`dM#S5<_R=&FjM zsI(fxGyy>G?0mr+no6O(iaVOk6U^e6uIqF2Ms==fgJX-1zfzRqOqvr#JnV4c|fKC;m4 z&Vb&?r8oHdl|Op(WVN!%&`u#X+hZb`z+sP#qJgFp2f++K6aXl?VWO)lhNdoswal{FEV`QB&%Aze zH~HQeplJ$Qn|UJfZv!=5<@C&DYcoIBF5;)wgjVM~Wl(q0N*9EKU`8&tLJ-U-Oa*I2 zW1+g;cd1tkBzAz7$Ou0aG}~jG!DOM;TtO#r1jn`ofFGsROO;gsWD=ugR1G7mQ(DQA zE2P_KWK&EX>4Tx04R}tkv&MmKpe$iQ>9WW4i*t{$WWauh)QwPDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;>4zH zaNZ}5va+lapA(OnbV1@rt}7nDaW1(m@XV;0&CC%;iN#U}D;>Ej=A{Svtpa#g^{ zF^>&skX=9cAN=mtDo###Ns%Pb{o*(uBS2^uXx1I)``B@sCqVESxYFDHjRr9NNqW7l z#g2f!ZQ$a%ttorJh;#z$LRx*rLNL9z`-Ff zTB7VVpLh3k_V(|YR)0UF=W@H&5}cg?000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQKC2xJ+RYybcN8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0@+DKK~y-)J(Ejs8&v>>zq$9$of*%Jow4J@&V#mYQmIG< zi8Tv;C2RI2tF<7@DwGm* z6HOdRZto0ALO0R4uEXh@l)#q^20j3jiJ`14s+(wB<#0TTQ3@7|HDzUK1p=qll^k=hq*{3@Xv->qcAd$kMSX=Jz4LdtNYW#MAt0n(gIUT1cxgm007@ucI>7XP;q2laq2EhK% z!&MHd-Bwif2Iwk>FJC2SE%@!vN7BcVpFb%_4eiqQ^V!;66fb1KDT9Q zNfHlFJEU37dR<|P&6IE6uXy$(B#tD$ub4~?QabdvJ$z50qDW({W%kif6g9&^fGHZJ zaOftQqfx|SvF7&900o_ni|+~UJ}k-d2KD;)e`vK7&z^)V(lz7rj3^ZB4O=KBxVXw$ qmkr%S6NWD5mzzwU9{TJJCI14D`bo$BDI)&>0000@B literal 0 HcmV?d00001 From 40c3d68c78056a79edfb4348004df15fd913346a Mon Sep 17 00:00:00 2001 From: Rahuldesai <84022777+Rahuldesai0@users.noreply.github.com> Date: Tue, 15 Oct 2024 13:45:55 +0530 Subject: [PATCH 7/8] Add files via upload --- community/textures/yellow_flower.png | Bin 0 -> 694 bytes community/textures/zombie.png | Bin 0 -> 1734 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 community/textures/yellow_flower.png create mode 100644 community/textures/zombie.png diff --git a/community/textures/yellow_flower.png b/community/textures/yellow_flower.png new file mode 100644 index 0000000000000000000000000000000000000000..6f35174d4b0b3fe60e0445a16274d058346b7d57 GIT binary patch literal 694 zcmV;n0!jUeP)EX>4Tx04R}tkv&MmKpe$iQ>9WW4i+imkfAzR5EXIMDionYs1;guFuC*#ni!H4 z7e~Rh;NZt%)xpJCR|i)?5c~jfb8}L3krMxx6k5c1aNLh~_a1le0HIN3n$;;BvB z;Ji;9Wo204LKlt6PRh$_2k|If<`^9lShJny7(5ySo_p#$NPk`VvaHY5X8x3Iklk|F9 ziyr}f+rY(jTT}Lc%N-#0WXPuMNh;#z$LRx*rLNL9z`-Ff zQljiNpLh3k_V(|YR)0TQ1#+Eku*4()000JJOGiWi{{a60|De66lK=n!32;bRa{vGf z6951U69E94oEQKA00(qQO+^Rg2MQJ*B2G%Z8~^|S8FWQhbVF}#ZDnqB07G(RVRU6= zAa`kWXdp*PO;A^X4i^9b0FOyTK~y-)V_+BsqW}jubD8P?$Dd6985kHCKK^9-zikgA zoR1EeunC&z{$sp-3t|uh0|Ud2>;D<}+5a&TZNSH$O#fBY7#Lo?{Le6V)<3wbNcM_Y zJHvmmb_To}nFty3>kh;qfn@9kVfB|lGQ)p16@&o{3=9k(<}wf;1|Q}!Fv2wA(~Q>( c_%tB{0EDhJ&^+$p^#A|>07*qoM6N<$f}_JB-v9sr literal 0 HcmV?d00001 diff --git a/community/textures/zombie.png b/community/textures/zombie.png new file mode 100644 index 0000000000000000000000000000000000000000..81ec3d1240f4b2f4ff70cf5257384e093f270037 GIT binary patch literal 1734 zcmV;%208hOP)LIq2000J!Nkl7(26@@wgMdaH!>@VoFV6jQ<7OczBg~Ak!okE9|Jvr zFz?N~XEYq1IrqNH0$XwA%J`e_{g5nN{>iUcdE=MthHE$9EASY2<;O3Mhmk?i95IXx z05#T+Sr|qJ7eD^!Ej~i*kNNHUe=6)H|NF0B8SC@w zx86vt-@JMAf6AZAx`+|(?{`)-M^r2eHyQw>#=7vbcuyRpI40wgT_EyN41vCBhj(s;3 z|FC^E7hj~v^+~|;vJ%S0GjDSG^A7-ni)Y>x;xSDju=V7E96v6OQe1K@MfM2jhanZL zZRd6?@SiB$zn`A#F0>!(j|kgr=K7df{Hc^!bj;2QVSx~xL{_{MlM zH4&O+vGE|HIH6Z8i#{RL%PF4R82lfP2i<-4gFl7mLA5GotE<9dr9ft9VRJJr96jFi z5^?!{5+}!xATp5#4dqyU#2jGmm`Uu96On0nV#Kw&ntomj3s9?xdAGaw>l4`JCVr4@ zCP(Tg`FH2Kn)iacKw3;+mp?_dDsC(bJEgg;@xH%3W^)r}XE}ZLr7;Mn(zn!*>=^Y{ zgnpEDm^f!-UPJcLloOJ;Tgfi)o1b4k&>HO(CwcHV@IpI=c5>>k&fin(Pv721@$WkK za`FGh^VsG8p8Af|PvQsb^n$zFgp`Lrl@d#}y0fUHOX-4?Z_X}|B67O}=!$vKLkKf)OG8PG8+#f<%CkKeUjLNgml`HU0~xugyob7 z-5AR$;m0w6`uqUZc}H=L05<)NTzpxSOILwxhtkJK8!xMvy!>nj(^H*Zf9YdgT(+IK zm=vgOLlh}T(s!f)eMDhjZ%1+!$_Rm11 zRC(^OG#=$kBJb0WW4xY=<;>x=T-8*TFB?GTUYACr#;Ba1F9ora7`E;TN*7)$18XhH76F%@J;QphOq@V><0XojVMDv|(gWvJ0wT1!26!NQdD}MOK(YZdoF+Yg{V`0@U!m_ zx-q}L@HqhA{?SPlS8tT*v;&-)wXF`5Yx4gU&5=r-hXr~Xvr8oaYBLVKUOVMbfD(rh zmu3;JtpHCZg)U26mOZn`|Gp=Xtep>xibJd z&F}TTpwkZ21FTq Date: Wed, 16 Oct 2024 22:35:19 +0530 Subject: [PATCH 8/8] Delete community/player.py --- community/player.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 community/player.py diff --git a/community/player.py b/community/player.py deleted file mode 100644 index e69de29b..00000000